管理図で可変数のフェーズレベルを指定するためのJSLこんにちは。 私は、作成される各チャートについて、私が読み込んでいる構成に基づいて管理図の作成を自動化するスクリプトを書いています。 以下は、管理図を作成するためのコードの抜粋です。 このチャートには、Phase Levelコマンドを使用してフェーズ内のSigmaとAvgを指定する2つの異なるフェーズが含まれています。
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()を呼び出す方法がわかりません。 3つの選択肢があると思います。
- フェーズレベル情報なしで管理図オブジェクトを作成してから、管理図オブジェクトにメッセージ(またはレポートに送信 - ディスパッチ)を発行して、forループにフェーズレベルを追加してからchart << Redo Analysis()を呼び出します。
- 管理図(Chart Col(Individualiaul Measurement()))コマンド内にループを埋め込んだ関数がありますが、その方法やそれが可能かどうか、または
- Control Chart()コマンドの前にforループを作成し、Phase Level()コマンドをリスト変数に保存してから、そのリストをControl Chart()コマンド内で何らかの方法で使用します。
管理図で可変数のフェーズレベルを指定するためのJSLその提案をありがとう @txnelson 。 これで私の仕事は終わりです。
管理図で可変数のフェーズレベルを指定するためのJSL多くの場合、私がそのようなことを処理する方法は、JSLを使用して、使用する必要があるすべてのコードを1つの長い文字列変数に作成し、その後そのコードを実行することです。
以下のサンプルは、そのようなテストされていない例です。
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 ) );