基於列數據自動化參考線您好,我對 JSL 非常陌生,正在努力想出一種方法來根據特定列中的值在圖形中自動創建多條參考線。 目前,我在 Y 軸上繪製一個變量 (:Signal),在 X 軸上繪製三個變量(: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 );
)}
)
)
);
腳本編寫回复:基於列數據自動化參考線鑑於您當前的數據結構,這是自動化歷史信號的一種方法
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 );
)}
)
)
);回复:基於列數據自動化參考線嘿 txnelson,非常感謝您的回复,這幾乎正是我要找的! 我唯一想知道的另一件事是是否可以讓 h line() 代碼與其對應的 :Target 匹配,而不必手動輸入圖表上的坐標。 將來,我將添加不同數量的目標,而且它們的順序並不總是相同。
回复:根據列數據自動化參考線需要做的就是弄清楚如何獲取值和順序,然後生成所需的 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 ) );