你好,
我需要帮助编写一个脚本,其中第一个参数/图表不应应用任何相位控制限值,而其余参数/图表在同一脚本中定义了固定的控制限值。
我目前使用的结构如下:
<SPAN>设置控制限({{LCL(.), Avg(.), UCL(.)},{LCL(1060.2), Avg(1405.3), UCL(1745.1)},{LCL(12.3), Avg(14.1), UCL(15.8)},{LCL(16), Avg(22), UCL(28)}}),</SPAN>
问题在于 JMP 总是弹出一个对话框,要求输入第一个图表的控制限。我必须点击“确定”或“取消”按钮,脚本才能继续运行。关闭对话框后,第一个图表正确地显示没有固定的控制限,而其他三个图表则使用了我提供的控制限——但我希望完全阻止该对话框的出现。
你的第一个图表(或列)是否在列属性中设置了固定限制,但你只是想移除它们?或者你的脚本中是否设置了固定限制,而你只是想让其中一个图表不受影响?
一些脚本选项的前提是固定限制已在脚本中设置。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Quality Control/Coating.jmp");
// let JMP set them initially, using hidden not avoid display limit changes
ccb = dt << Control Chart Builder(
Variables(Subgroup(:Sample), Y(:Weight)),
Chart(Position(1), Points(Statistic("Average")), Limits(Sigma("Moving Range"))),
Chart(Position(2), Points(Statistic("Moving Range on Means")), Limits(Sigma("Moving Range"))),
Chart(Position(3), Points(Statistic("Range")), Limits(Sigma("Range"))),
Chart(Position(4), Points(Statistic("Range")), Limits(Sigma("Range"))),
Show Control Panel(0),
Invisible
);
// don't set them to first chart at all and let JMP do it
// I would use a list of limits and for-loop to set rest of the limits, but you could just copy paste this multiple times
ccb << Chart(Position(2), Set Control Limits({LCL(1), Avg(3), UCL(6)}));
ccb << Chart(Position(3), Set Control Limits({LCL(2), Avg(4), UCL(7)}));
ccb << Chart(Position(4), Set Control Limits({LCL(3), Avg(5), UCL(8)}));
// Show the report again
wait(0);
ccb << show window(1);
有很多方法可以简化限制管理,这里介绍一种使用列表的列表的方法(也可以使用数据表、关联数组等)。
Names Default To Here(1);
CC_LIMITS = {
{LCL(1), Avg(3), UCL(6)},
{LCL(2), Avg(4), UCL(7)},
{LCL(3), Avg(5), UCL(8)}
};
dt = Open("$SAMPLE_DATA/Quality Control/Coating.jmp");
ccb = dt << Control Chart Builder(
Variables(Subgroup(:Sample), Y(:Weight)),
Chart(Position(1), Points(Statistic("Average")), Limits(Sigma("Moving Range"))),
Chart(Position(2), Points(Statistic("Moving Range on Means")), Limits(Sigma("Moving Range"))),
Chart(Position(3), Points(Statistic("Range")), Limits(Sigma("Range"))),
Chart(Position(4), Points(Statistic("Range")), Limits(Sigma("Range"))),
Show Control Panel(0),
Invisible
);
For(i = 2, i <= N Items(CC_LIMITS) + 1, i++,
Eval(EvalExpr(
ccb << Chart(Position(i), Set Control Limits(Expr(CC_LIMITS[i-1])));
));
);
wait(0);
ccb << show window(1);