基于列数据自动参考线您好,我对 JSL 非常陌生,正在努力想办法根据特定列中的值在图表中自动创建多条参考线。 目前,我在 Y 轴上绘制一个变量 (:Signal),在 X 轴上绘制三个变量(:Zone、:Target 和 :Condition)。 每个 (:Target) 变量都有一个特定的 (:历史信号),我想找到一种方法来自动绘制 (:Target) 的 (:历史信号) 作为参考线。 我的代码是通过 h line() 手动添加历史信号值来完成的,但理想情况下,脚本会根据其相应的历史信号为每个 (:target) 添加参考线。 谢谢你!
Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Signal"},
"Variability Chart",
FrameBox,
{Frame Size( 969, 240 ),
Add Graphics Script(
2,
Description( "" ),
Pen Color( "RED" );
//Target 2
H Line( 0, 2, 234 );
//Target 3
H Line( 2, 4, 670 );
//Target 1
H Line( 4, 6, 463 );
)}
)
)
);
自动化和脚本编写回复:根据列数据自动参考线需要做的就是弄清楚如何获取值和顺序,然后生成所需的 JSL。这是一个简单的示例,应该可以帮助您以正确的方向开始创建最终脚本。
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of targets and get the means
Summarize( dt, targs = by( :Zone, :Target ), targMeans = Mean( :Historical Signal ) );
vc = Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 )
);
// Create the JSL to submit to generate the Target Lines
theExpr =
"Report( vc )[FrameBox( 1 )] << add graphics Script(
Description( \!"\!" ),
Pen Color( \!"RED\!" );";
For( ii = 1, ii <= N Items( targMeans ), ii++,
theExpr = theExpr || "H Line( " || Char( (ii - 1) * 2 ) || "," || Char( (ii - 1) * 2 + 2 )
|| "," || Char( targMeans[ii] ) || ");";
);
Eval( Parse( theExpr ) );
回复:根据列数据自动参考线嘿 txnelson,非常感谢您的回复,这几乎正是我正在寻找的! 我唯一想知道的另一件事是是否可以使 h line() 代码与其相应的 :Target 匹配,而不必手动输入图表上的坐标。 将来,我将添加不同数量的目标,并且它们的顺序并不总是相同。
回复:根据列数据自动参考线考虑到您当前的数据结构,这是自动化历史信号的一种方法
Names Default To Here( 1 );
dt = Current Data Table();
targ1 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 1" )] );
targ2 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 2" )] );
targ3 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 3" )] );
Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Signal"},
"Variability Chart",
FrameBox,
{Frame Size( 969, 240 ), Add Graphics Script(
2,
Description( "" ),
Pen Color( "RED" );
//Target 2
H Line( 0, 2, targ2 );
//Target 3
H Line( 2, 4, targ3 );
//Target 1
H Line( 4, 6, targ1 );
)}
)
)
);