列データに基づいて参照線を自動化するこんにちは、私はJSLを初めて使用し、特定の列の値に基づいてグラフに複数の参照線を自動的に作成する方法を考えるのに苦労しています。 現在、Y軸に1つの変数(:Signal)をグラフ化し、X軸に3つの変数(:Zone、:Target、および:Condition)をグラフ化しています。 各(:Target)変数には特定の(:historical signal)があり、(:Target)の(:historical signal)を参照線として自動的にグラフ化する方法を見つけたいと思います。 私が持っているコードは、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 );
)}
)
)
);
スクリプティングRe:列データに基づいて参照線を自動化する現在のデータ構造を前提として、履歴信号を自動化する1つの方法を次に示します。
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 );
)}
)
)
);Re:列データに基づいて参照線を自動化するねえtxnelson、あなたの応答をどうもありがとう、これはほぼ正確に私が探しているものです! 私が疑問に思っている他の唯一のことは、グラフに手動で座標を入力する代わりに、h line()コードを対応する:Targetと一致させることができるかどうかです。 将来的には、異なる量のターゲットを追加する予定であり、それらは常に同じ順序になるとは限りません。
Re:列データに基づいて参照線を自動化する実行する必要があるのは、値と順序を取得する方法を理解してから、必要な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 ) );