Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo,
Wie kann ich Spezifikationsgrenzen (rote Linie) nach Datenkategorie im Variabilitätsdiagramm wie im folgenden Beispiel zeichnen? Die rote Linie wurde manuell in pptx erstellt.
Fügen Sie die JMP-Datei als Referenz bei. Vielen Dank für Ihre Antwort.

Automatisierung und SkriptingGrundlegende Datenanalyse und -modellierungWindowsBetreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Gibt das Variieren der Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm einige Anregungen?
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo,
Ich habe die Schritte geprüft und befolgt, aber es hat trotzdem nicht funktioniert, auch wenn ich die angehängte Datei und das Skript direkt verwendet habe.
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Verwenden Sie Ihre Daten (+ Hinzufügen von Grenzwerten) und nehmen Sie eine kleine Korrektur am Skript aus diesem Thread vor

Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo jthi,
Du hast tatsächlich das gewünschte Diagramm gezeichnet, aber ich weiß immer noch nicht, wie ich das Skript ändern soll. Trotzdem vielen Dank für deine Antwort.
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Names Default To Here(1);
dt1 = Open("$DOWNLOADS/sample data.jmp");
dt = dt1 << Stack( // stack to get proper data format
columns(:A10, :A20, :A30),
Source Label Column("SampleGroup"),
Output Table("Stack")
);
// Add limits as they were not provided
dt << New Column("LSL", Numeric, Continuous, Values([10, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 20, 20, 20, 20]));
dt << New Column("Target", Numeric, Continuous, Values([20, 20, 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, 40, 40]));
dt << New Column("USL", Numeric, Continuous, Values([30, 30, 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, 50, 50]));
var = dt << Variability Chart(Y(:Data), X(:Phase, :SampleGroup));
dt_summary = dt << Summary(
Group(:Phase),
Max(:LSL),
Mean(:Target),
Min(:USL),
N Categories(:SampleGroup),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
dt_summary << Delete Columns("N Rows");
// We need access to the framebox
fb = Report(var)[Outline Box("Variability Chart for Data"), Frame Box(1)];
//Get phases count (this was missing)
Summarize(dt, phases = By(:Phase));
// Using graphic scripts most likely easiest option
xidx = 0;
For(i = 1, i <= N Items(phases), i++,
curphase = dt_summary[i, "Phase"];
curlsl = dt_summary[i, "LSL"];
curusl = dt_summary[i, "USL"];
curtarget = dt_summary[i, "Target"];
curcount = dt_summary[i, "SampleGroup"];
xend = xidx + curcount;
lslstart = Eval List({xidx, curlsl});
lslend = Eval List({xend, curlsl});
uslstart = Eval List({xidx, curusl});
uslend = Eval List({xend, curusl});
targetstart = Eval List({xidx, curtarget});
targetend = Eval List({xend, curtarget});
xidx = xend;
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Red");
Pen Size(1);
Line(Expr(lslstart), Expr(lslend)); // {x1, y1}, {x2, y2}
Line(Expr(uslstart), Expr(uslend)); // {x1, y1}, {x2, y2}
Pen Color("Blue");
Line(Expr(targetstart), Expr(targetend)); // {x1, y1}, {x2, y2}
);
));
);
fb << Y Axis(Max(1.1*Max(Col Max(Column(dt, "Data")), Col Max(Column(dt_summary, "USL"))))); // adjust yaxisBetreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo,
Danke für Ihr Skript, es hat erfolgreich funktioniert.
Gibt es bezüglich der unten stehenden Grenzwerteinstellung Lösungen zur Optimierung des folgenden Skripts, wenn ich bis zu 100 Daten habe und nur eine Grenzwertlinie für die dedizierte „Phase“ hinzufüge? Danke
// Add limits as they were not provided
dt << New Column("LSL", Numeric, Continuous, Values([10, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 20, 20, 20, 20]));
dt << New Column("Target", Numeric, Continuous, Values([20, 20, 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, 40, 40]));
dt << New Column("USL", Numeric, Continuous, Values([30, 30, 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, 50, 50]));Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Sie könnten eine Spezifikationsgrenzwerttabelle erstellen oder, wenn Sie nicht zu viele Parameter haben, ein assoziatives Array dafür
Names Default To Here(1);
dt1 = Open("$DOWNLOADS/sample data.jmp");
dt = dt1 << Stack( // stack to get proper data format
columns(:A10, :A20, :A30),
Source Label Column("SampleGroup"),
Output Table("Stack")
);
aa_specs = [
"L1" => ["LSL" => 10, "USL" => 30, "Target" => 20],
"L2" => ["LSL" => 30, "USL" => 50, "Target" => 40]
];
// Add limits as they were not provided
dt << New Column("LSL", Numeric, Continuous);
dt << New Column("Target", Numeric, Continuous);
dt << New Column("USL", Numeric, Continuous);
For Each Row(dt,
:LSL = aa_specs[:Phase]["LSL"];
:USL = aa_specs[:Phase]["USL"];
:Target = aa_specs[:Phase]["Target"];
);
Oder mithilfe der Spezifikationstabelle
Names Default To Here(1);
dt1 = Open("$DOWNLOADS/sample data.jmp");
dt = dt1 << Stack( // stack to get proper data format
columns(:A10, :A20, :A30),
Source Label Column("SampleGroup"),
Output Table("Stack")
);
dt_specs = New Table("Specs",
Add Rows(2),
Compress File When Saved(1),
New Column("Variable", Character, "Nominal", Set Values({"L1", "L2"})),
New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([10, 30])),
New Column("Target", Numeric, "Continuous", Format("Best", 12), Set Values([20, 40])),
New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([30, 50]))
);
dt << Update(
With(dt_specs),
Match Columns(:Phase = :Variable)
);
Close(dt_specs, no save);Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo jthi,
Es hat funktioniert, als ich Methode 1 verwendet habe.
Angenommen, ich möchte, dass L2 kein USL/LSL hat, wie kann ich es optimieren?
Ich habe versucht, den Wert auf 0 zu setzen, aber an der Y-Nullposition wird eine rote Linie angezeigt.
I put //"L2" => ["LSL" => 0, "USL" => 0, //"Target" => 40], it's not work.
aa_specs = [
"L1" => ["LSL" => 10, "USL" => 30, "Target" => 20],
"L2" => ["LSL" => 0, "USL" => 0, //"Target" => 40]
];
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Ich würde den Wert als „fehlend“ festlegen, wenn Sie ihn nicht haben möchten, und ich denke, es sollte mit dem Skript funktionieren.
Mehr anzeigen...
Names Default To Here(1);
dt1 = Open("$DOWNLOADS/sample data.jmp");
dt = dt1 << Stack( // stack to get proper data format
columns(:A10, :A20, :A30),
Source Label Column("SampleGroup"),
Output Table("Stack")
);
aa_specs = [
"L1" => ["LSL" => 10, "USL" => 30, "Target" => 20],
"L2" => ["LSL" => 30, "USL" => ., "Target" => .]
];
// Add limits as they were not provided
dt << New Column("LSL", Numeric, Continuous);
dt << New Column("Target", Numeric, Continuous);
dt << New Column("USL", Numeric, Continuous);
For Each Row(dt,
:LSL = aa_specs[:Phase]["LSL"];
:USL = aa_specs[:Phase]["USL"];
:Target = aa_specs[:Phase]["Target"];
);
var = dt << Variability Chart(Y(:Data), X(:Phase, :SampleGroup));
dt_summary = dt << Summary(
Group(:Phase),
Max(:LSL),
Mean(:Target),
Min(:USL),
N Categories(:SampleGroup),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
dt_summary << Delete Columns("N Rows");
// We need access to the framebox
fb = Report(var)[Outline Box("Variability Chart for Data"), Frame Box(1)];
//Get phases count (this was missing)
Summarize(dt, phases = By(:Phase));
// Using graphic scripts most likely easiest option
xidx = 0;
For(i = 1, i <= N Items(phases), i++,
curphase = dt_summary[i, "Phase"];
curlsl = dt_summary[i, "LSL"];
curusl = dt_summary[i, "USL"];
curtarget = dt_summary[i, "Target"];
curcount = dt_summary[i, "SampleGroup"];
xend = xidx + curcount;
lslstart = Eval List({xidx, curlsl});
lslend = Eval List({xend, curlsl});
uslstart = Eval List({xidx, curusl});
uslend = Eval List({xend, curusl});
targetstart = Eval List({xidx, curtarget});
targetend = Eval List({xend, curtarget});
xidx = xend;
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Red");
Pen Size(1);
Line(Expr(lslstart), Expr(lslend)); // {x1, y1}, {x2, y2}
Line(Expr(uslstart), Expr(uslend)); // {x1, y1}, {x2, y2}
Pen Color("Blue");
Line(Expr(targetstart), Expr(targetend)); // {x1, y1}, {x2, y2}
);
));
);
fb << Y Axis(Max(1.1*Max(Col Max(Column(dt, "Data")), Col Max(Column(dt_summary, "USL"))))); // adjust yaxis
Sie könnten das Skript auch leicht ändern und sicherstellen, dass es diejenigen ignoriert, die fehlende Werte haben, aber das ist möglicherweise nicht notwendig
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo Jarmo,
Ich versuche, von der Zeile zur Graphbox zu wechseln, aber mit dem unten geänderten Skript funktioniert es nicht. Wie kann ich es ändern?
Eval(EvalExpr(
fb << Add Graphics Script(
Fill Color("Green");
Transparency( 0.3 );
Graph Box(Expr(lslstart), Expr(lslend)); // {x1, y1}, {x2, y2}
Graph Box(Expr(uslstart), Expr(uslend)); // {x1, y1}, {x2, y2}Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Gibt es einen bestimmten Grund, zu versuchen, die Graphbox im Grafikskript zu ändern?
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo Jarmo,
Bei mehreren Phasen/Gruppen auf der X-Achse kann diese Linie die Datenpunkte des Boxplots verdecken. Ich möchte stattdessen das folgende Bild verwenden.

Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Dann könnten Sie Rect anstelle von Line() verwenden, ohne dass Sie eine Graphbox benötigen (die Graphbox ist im Grunde bereits vorhanden). Fehlende Werte müssen Sie bei dieser Option verwalten, da fehlende Punkte Probleme mit Rect() verursachen.

Eval(EvalExpr(
fb << Add Graphics Script(
Transparency(0.2);
Pen Color("Green");
Fill Color("Green");
Rect(Expr(lslstart), Expr(uslend), 1);
);
));Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo Jarmo,
Vielen Dank für Ihre schnelle Antwort.
Noch eine Frage zum Hinzufügen eines zusätzlichen X-Achsenwerts.
Wenn ich einen anderen X-Wert (Beispiel A) eingebe, ändere ich das unten stehende Skript. Das Ergebnis der Grenzwertlinie ist jedoch falsch. Wie kann ich es ändern?
var = dt << Variability Chart(Y(:Data), X(:Phase, :SampleGroup, :SampleA));
dt_summary = dt << Summary(
Group(:Phase),
Max(:LSL),
Mean(:Target),
Min(:USL),
N Categories(:SampleGroup, :SampleA),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
dt_summary << Delete Columns("N Rows");
// We need access to the framebox
fb = Report(var)[Outline Box("Variability Chart for Data"), Frame Box(1)];
//Get phases count (this was missing)
Summarize(dt, phases = By(:Phase));
// Using graphic scripts most likely easiest option
xidx = 0;
For(i = 1, i <= N Items(phases), i++,
curphase = dt_summary[i, "Phase"];
curlsl = dt_summary[i, "LSL"];
curusl = dt_summary[i, "USL"];
curtarget = dt_summary[i, "Target"];
curcount = dt_summary[i, "SampleGroup", "SampleA"];
xend = xidx + curcount;
lslstart = Eval List({xidx, curlsl});
lslend = Eval List({xend, curlsl});
uslstart = Eval List({xidx, curusl});
uslend = Eval List({xend, curusl});
targetstart = Eval List({xidx, curtarget});
targetend = Eval List({xend, curtarget});
xidx = xend;
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Red");
Pen Size(1);
Line(Expr(lslstart), Expr(lslend)); // {x1, y1}, {x2, y2}
Line(Expr(uslstart), Expr(uslend)); // {x1, y1}, {x2, y2}
Pen Color("Blue");
Line(Expr(targetstart), Expr(targetend)); // {x1, y1}, {x2, y2}
);
));
);
fb << Y Axis(Max(1.1*Max(Col Max(Column(dt, "Data")), Col Max(Column(dt_summary, "USL"))))); // adjust yaxisBetreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Wie werden die Grenzwerte gebildet (basierend auf welchen Gruppen)? Was läuft falsch? Höchstwahrscheinlich müssen Sie die Zusammenfassung, ggf. den Summarize- und den aktuellen Zählerwert anpassen.
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Ja, das ist mir aufgefallen. Deshalb habe ich das Skript für Summarize und den aktuellen Zählwert angepasst. Die Grenzwertlinie kann jedoch nicht alle Bedingungen unter Phase vollständig abdecken. Die Grenzwerte basieren weiterhin auf der Phase. (Bitte ignorieren Sie, dass es keine neue SampleA-X-Achse gibt.)

Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Sie könnten in Ihrer Haupttabelle eine neue Spalte erstellen, die eine Kombination aus SampleGroup und :SampleA ist, indem Sie diese beispielsweise verketten. Verwenden Sie diese dann für die N Kategorien in der Zusammenfassung und für den aktuellen Zähler, um die korrekten Zählungen zu erhalten.
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?var = dt << Variability Chart(Y(:Data), X(:Phase, :SampleGroup, :SampleA));
dt_summary = dt << Summary(
Group(:Phase),
Max(:LSL),
Mean(:Target),
Min(:USL),
N Categories(:SampleGroup, :SampleA),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
dt_summary << Delete Columns("N Rows");
// We need access to the framebox
fb = Report(var)[Outline Box("Variability Chart for Data"), Frame Box(1)];
//Get phases count (this was missing)
Summarize(dt, phases = By(:Phase));
// Using graphic scripts most likely easiest option
xidx = 0;
For(i = 1, i <= N Items(phases), i++,
curphase = dt_summary[i, "Phase"];
curlsl = dt_summary[i, "LSL"];
curusl = dt_summary[i, "USL"];
curtarget = dt_summary[i, "Target"];
curcount = dt_summary[i, "N Rows"];
Ich habe das obige Skript geändert, aber die Grenzwertlinie kann nicht generiert werden. Wie kann ich das ändern?
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Was läuft dabei schief (ich habe Ihre Daten nicht und kann das daher nicht überprüfen)?
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Testdaten und Skript finden Sie in den Anhängen.
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Wie bereits erwähnt, ist es am einfachsten, eine neue Gruppierungsspalte zu erstellen und diese in der Übersichtstabelle zu verwenden. Es kann auch ausreichen, einfach die Summe der n Kategorien über mehrere Gruppen hinweg zu berechnen.
curcount = Sum(dt_summary[i, {"Leg", "Layer"}]);Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo,
Wenn Sie nach einer skriptfreien Lösung suchen und mit der Verwendung von Graph Builder einverstanden sind, verarbeitet dieser tatsächlich mehrstufige Spezifikationsgrenzen nach Kategorie – stellen Sie einfach sicher, dass Ihre Spezifikationsgrenzen entsprechend strukturiert sind (z. B. über die Spalteneigenschaft).
Wenn Sie das Variabilitätsdiagramm verwenden möchten, ist dieses Verhalten nicht in JMP integriert. YieldOptiX, ein Plugin für die Testdatenanalyse, unterstützt es jedoch. Es bietet Unterstützung für kategoriebasierte Spezifikationsgrenzen direkt im Variabilitätsdiagramm.
Daher werden beide Optionen (Graph Builder oder Variabilitätsdiagramm mit gruppierten Grenzwerten) abhängig von Ihrer bevorzugten Schnittstelle unterstützt – es kommt einfach darauf an, was am besten zu Ihrem Prozess passt.
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Hallo Jarmo
Wenn ich mehrere Daten eingebe, entspricht die Spezifikationsgrenze nicht dem Skriptinhalt. Wie kann ich das Skript ändern?
Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie im Variabilitätsdiagramm?Sie müssen die Gruppenanzahl auf unterschiedliche Weise berechnen. Eine recht einfache Möglichkeit wäre, Ihrem dt eine neue Spalte hinzuzufügen, die Bein und Schicht kombiniert
dt << new column("LEGLAYER", Character, Nominal, Formula(:Leg ||:Layer));
dann verwenden Sie das in der Zusammenfassung
dt_summary = dt << Summary(
Group(:SampleGroup),
Max(:LSL),
//Mean(:Target),
Min(:USL),
N Categories(:LEGLAYER),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
und holen Sie sich den aktuellen Zählerstand daraus
curcount = Sum(dt_summary[i, {"LEGLAYER"}]);

Betreff: Wie definiere ich Spezifikationsgrenzen nach Datenkategorie in einem Variabilitätsdiagramm?Ich habe das von Ihnen bereitgestellte Skript verwendet, aber das Spezifikationslimit wird nicht angezeigt.
Könnten Sie bitte das beigefügte Skript prüfen? Wie kann ich es modifizieren?