列データに基づいて基準線を自動化するこんにちは、私は JSL を初めて使用するもので、特定の列の値に基づいてグラフに複数の参照線を自動的に作成する方法を考えるのに苦労しています。 現在、Y 軸に 1 つの変数 (:Signal)、X 軸に 3 つの変数 (:Zone、:Target、および:Condition) をグラフ化しています。 各 (:Target) 変数には特定の (:historyal signal) があり、(:Target) の (:historyal 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: 列データに基づいて基準線を自動化する必要なのは、値と順序を取得する方法を見つけて、必要な 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 ) );
Re: 列データに基づいて基準線を自動化するtxnelson さん、ご返信ありがとうございます。これはまさに私が探しているものです。 私が疑問に思っているもう一つのことは、グラフ上の座標を手動で入力する代わりに、 h line() コードを対応する :Target と一致させることができるかどうかです。 将来的には、さまざまな量のターゲットを追加する予定ですが、それらは常に同じ順序になるとは限りません。
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 );
)}
)
)
);