JSL用於在控製圖中指定可變數量的相位級別你好。 我正在編寫一個腳本,根據我正在為每個要創建的圖表讀取的配置自動創建控製圖。 下面是用於創建控製圖的代碼snipet。 此圖表包含兩個不同的階段,其中“階段級別”命令用於指定階段中的Sigma和Avg。
chart = Control Chart(
Sample Label ( Column(dt, chartConfig["XParamName"]) ),
Phase( Column(dt, chartConfig["PhaseColumn"]) ),
Group Size( 1 ),
Chart Col(
column(dt,chartConfig["YParamName"]),
Individual Measurement(
Phase Level( "1", Sigma(p1_CL_Range/3), Avg(p1_Mean_calc)),
Phase Level( "2", Sigma(p2_CL_Range/3), Avg(p2_Mean_calc))
)
)
);我希望能夠為任意數量的階段執行此操作,我將在配置信息中指定階段並循環遍歷它們。 但我不知道如何調用Phase Level()。 我想有三種選擇:
- 創建沒有階段級別信息的控製圖對象,然後向控製圖對象發出一條消息(或Send to Report - Dispatch),它將在for循環中添加Phase Levels,然後調用圖表<< Redo Analysis(),
- 具有嵌入控製圖(圖表Col(Individiaul Measurement()))命令中的循環的功能,但我不知道如何執行此操作或是否可行,或者
- 在Control Chart()命令之前使用for循環,並將Phase Level()命令保存到列表變量,然後在Control Chart()命令中以某種方式使用該列表。
Re:用於在控製圖中指定可變數量的相位級別的JSL謝謝你的建議, @txnelson 。 這為我完成了工作。
Re:用於在控製圖中指定可變數量的相位級別的JSL很多時候,我處理這些事情的方法是使用JSL將需要使用的所有代碼創建到一個長字符串變量中,然後一旦完成,就執行該代碼。
以下示例是未經測試的示例
Phases = 3;
theExpr =
"chart = Control Chart(
Sample Label( Column( dt, chartConfig[\!"XParamName\!"] ) ),
Phase( Column( dt, chartConfig[\!"PhaseColumn\!"] ) ),
Group Size( 1 ),
Chart Col(
Column( dt, chartConfig[\!"YParamName\!"] ),
Individual Measurement(";
For( i = 1, i <= Phases, i++,
theExpr = theExpr || "Phase Level( \!"" || Char( i ) || "\!",
Sigma( p" || Char( i ) || "_CL_Range / 3 ), Avg( p" || Char( i ) ||
"_Mean_calc ) ),"
);
theExpr = theExpr || ")));";
Eval( Parse( theExpr ) );