Hallo,
Ich benötige Hilfe beim Schreiben eines Skripts, in dem für den ersten Parameter/das erste Diagramm keine Phasenkontrollgrenzen angewendet werden sollen , während für die übrigen Parameter/Diagramme feste Kontrollgrenzen im selben Skript definiert sind.
Ich verwende derzeit folgende Struktur:
<SPAN>Set Control Limits( { {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>
Das Problem ist, dass JMP immer ein Dialogfeld anzeigt, in dem ich die Grenzen des ersten Diagramms festlegen muss. Ich muss auf „OK“ oder „Abbrechen“ klicken, bevor das Skript fortgesetzt wird. Nach dem Schließen des Dialogfelds zeigt das erste Diagramm korrekterweise keine festen Kontrollgrenzen an, und die anderen drei Diagramme verwenden die angegebenen Grenzen – ich möchte jedoch verhindern, dass das Dialogfeld überhaupt angezeigt wird .
Hat Ihr erstes Diagramm (oder Ihre erste Spalte) ebenfalls feste Grenzwerte in den Spalteneigenschaften, die Sie entfernen möchten? Oder haben Sie ein Skript mit festen Grenzwerten, und Sie möchten lediglich ein Diagramm ohne diese Grenzwerte belassen?
Einige Skriptoptionen unter der Annahme, dass die festen Grenzwerte im Skript festgelegt sind.
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);
Es gibt viele Möglichkeiten zur einfacheren Limitverwaltung, hier ist eine, die eine Liste von Listen verwendet (man könnte auch eine Datentabelle, ein assoziatives Array usw. verwenden).
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);