你好,
我需要幫助編寫一個腳本,其中第一個參數/圖表不應應用任何相位控制限值,而其餘參數/圖表在同一腳本中定義了固定的控制限值。
我目前使用的結構如下:
<SPAN>設定控制極限({{LCL(.), Avg(.), UCL(.)},{LCL(1060.2), Avg(1405.3), UCL(1745.1)},{LCL(12.3), Avg(14.1), UCL(15.8),{CL(15.8),FCL(15.</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);