我有两张桌子
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格式。
您在哪个部分遇到问题?是给关联数组添加限制条件吗?