我有兩張桌子
Table1 是 dt=Data Table("Data"); 它包含列:WAFER、STRUCTURE、PARAMETER 和 Value
Table2 是 dtr= Data Table("Targets"); 它包含以下列:PARAMETER、USL、LSL 和 Target
在一個視窗(處於活動狀態,可用於選擇點或更改圖例)中,我希望顯示所有參數的變異性圖表,並為每個參數添加參考線(目標線、上限線、下限線)。
如果某個參數在目標檔案 (dtr) 中沒有目標值,但在資料檔案 (dt) 中有數據,則建立的變異性圖不包含參考線。否則,將會新增參考線。
nw << Append(
vc = dt << Variability Chart(
Y(:Normalize Value),
X(:STRUCTURE, :WAFER),
Variability Analysis(
:Value,
Connect Cell Means(1),
Std Dev Chart(0),
Points Jittered(1),
AIAG Labels(0),
Show Box Plots(1)
),
Where(:Parameter == currentParam),
SendToReport(
Dispatch({"Variability Chart for Normalize Value"}, "2", ScaleBox,
{Add Ref Line(lsl, "Dotted", "Red", "LSL", 2),
Add Ref Line(target, "Solid", "Black", "Target", 2),
Add Ref Line(usl, "Dotted", "Red", "USL", 2)}
)
)
)
);
編輯(jthi):新增了jsl格式。
使用“For Each Row”循環遍歷目標表(假設所有參數都已存在),並在循環中建立圖表。您可以為不同的情況(有限制/無限制)建立不同的變異性圖表訊息。對於有限制的情況,請使用表達式求值來新增限制條件。
例子
Names Default To Here(1);
dt_limits = New Table("Cities Limits",
Add Rows(4),
New Column("Process",
Character,
Set Values({"OZONE", "CO", "SO2", "NO"})
),
New Column("LSL", Numeric, Set Values([-20, -30, -25, -10])),
New Column("Target", Numeric, Set Values([5, ., 1, 5])),
New Column("USL", Numeric, Set Values([20, 30, 10, 25])),
Set Label Columns(:Process)
);
dt = Open("$SAMPLE_DATA/Cities.jmp");
dt_stack = dt << Stack(
columns(:OZONE, :CO, :SO2, :NO, :PM10, :Lead),
Output Table("Stack of Cities (OZONE, CO, SO2, NO, PM10, Lead)")
);
Close(dt, no save);
nw = New Window("",
vlb = V List Box()
);
For Each Row(dt_limits,
lowlimit = :LSL;
highlimit = :USL;
targetlimit = :Target;
If(Is Missing(targetlimit),
vlb << Append(dt_stack << Variability Chart(Y(:Data), Model("Main Effect"), X(:city)))
,
vlb << Append(Eval(EvalExpr(
dt_stack << Variability Chart(
Y(:Data),
Model("Main Effect"),
X(:city),
SendToReport(
Dispatch(
{"Variability Gauge Analysis for Data", "Variability Chart for Data"},
"2", ScaleBox,
{Add Ref Line(Expr(lowlimit), "Dotted", "Red", "LSL", 2),
Add Ref Line(Expr(targetlimit), "Solid", "Black", "Target", 2),
Add Ref Line(Expr(highlimit), "Dotted", "Red", "USL", 2)}
)
)
);
)));
);
);
Write();

你好,Jarmo,
1. 在我的例子中,我想遍歷dt 中的 PARAMETER,該 PARAMETER 可能存在於 dtr 中,也可能不存在。此外,可能有多行資料具有相同的 PARAMETER(例如,影像的多個測量值)。
2. 在你的腳本中,我無法分辨哪個圖對應哪個區域。我需要將變異性圖的名稱與參數名稱相同。
我使用了以下邏輯,但在新增限制條件時遇到了困難。
paramList = Associative Array(:Parameter << Get Values) << Get Keys;
For(i = 1, i <= N Items(paramList), i++,
currentParam = paramList[i]
);
編輯(jthi):新增了jsl格式。
您在哪個部分遇到問題?是為關聯數組新增限制條件嗎?