Zeichnen von UCL/LCL, die in Spalten in der Zeile definiert sindHallo,
Kann jemand mitteilen, wie man LCL/UCL zu jeder Art von Diagramm hinzufügt, wenn diese Grenzwerte in einer Spalte in dieser bestimmten Zeile definiert sind. In der Tabelle werden mehrere Parameter dargestellt (gekennzeichnet durch die Spaltenbezeichnung), sodass für jedes Diagramm ein anderer Satz von Grenzwerten für jeden der Diagrammtypen in dieser Zeile definiert ist.
Zum Beispiel (im Anhang), wenn wir zwei Spalten von UCL/LCL im großen Klassenbeispiel mit gestapelter Datentabelle hätten.
Kann jemand ein kurzes Skript schreiben, um ein Overlay-Plot für die Höhe mit LCL und UCL zu erstellen, wie für die Höhe in der jeweiligen Spalte definiert.
Hoffe die Frage ist sinnvoll.
Danke!!
Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der ZeileHat jemand ein Ideal, wie man dies aufzeichnet, wenn sich UCL / LCL mit der Zeit ändert?
Das von JIM vorgeschlagene Verfahren @txnelson funktioniert hervorragend für statische UCL/LCL-Grenzwerte. aber mit sich ändernden Limits nicht sicher, wie es geht?
Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der ZeileIch bin mir nicht sicher, was genau Sie versuchen, den Overlay Plot zu machen.Ich schlage vor, dass Sie den Plot interaktiv ausführen, um ihn in die gewünschte Form zu bringen, und dann einfach zum roten Dreieck gehen und auswählen, dass JMP das Skript speichern soll.Aber für das, was JSL Sie gezeigt haben:
Ihnen fehlt ein X()-Element in Ihrer Overlay-Spezifikation.Das Beispiel, von dem Sie angegeben haben, dass Sie es geändert haben
op = Overlay Plot( Y( :data ), by( :label ) );
war nicht die richtige Form.Das richtige Beispiel war
op = Overlay Plot( X( :name ), Y( :Data ), by( :label ) );
Daher ist die Spezifikation, die Sie verwenden müssen, folgende:
op = Overlay Plot( Y( :data1, :data2), X(:data3 ), by( :label ) , needle (1) );
Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der ZeileHallo,
Als JSL-Neuling habe ich Ihren Ansatz kopiert und funktioniert perfekt für einzelne Spalten mit geplotteten Daten (Danke!). Ich möchte jedoch 2 weitere Spalten (und eine Nadel dazwischen) in das Diagramm aufnehmen. Dies ergibt derzeit ein Diagramm mit den 3 Spalten, aber ohne UCL/LCL.
Ich habe das "op = Overlay Plot( Y( :data ), by( :label ) ); "
Zu
"op = Overlay Plot( Y( :data1, :data2, :data3 ), by( :label ) , needle (1) ); "
Wissen Sie, warum das so ist und wie Sie es beheben können? Danke!
Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der ZeileAm besten erfahren Sie, welche Diagramme verfügbar sind, indem Sie sich das Dokument „Essential Graphing“ ansehen
Hilfe==>Essential Graphing
Nachdem Sie ein Diagramm ausgeführt haben, können Sie in der grafischen Ausgabe über das rote Dreieck auswählen, um das Skript zu speichern.Von dort erhalten Sie den Code, den Sie zum Generieren der Diagramme verwenden müssen.
Nachfolgend finden Sie eine Änderung des zuvor bereitgestellten Skripts.Ich habe es geändert, um zu überprüfen, ob die Referenzlinien angezeigt werden.
Names Default To Here( 1 );
dt = Current Data Table();
// Get all of the by values, since separate code will have to be added for each
Summarize( dt, byVals = by( :Label ) );
// Generate the Plot code
op = Overlay Plot( X( :name ), Y( :Data ), by( :label ) );
For( i = 1, i <= N Items( byVals ), i++,
// Get the LCL and UCL values for this by group
LCL = :LCL[(dt << get rows where( :Label == byVals[i] ))[1]];
UCL = :UCL[(dt << get rows where( :Label == byVals[i] ))[1]];
// Make sure the UCL and LCL values are displayed
chartMin = Min( :data[dt << get rows where( :Label == byVals[i])]);
chartMax = Max( :data[dt << get rows where( :Label == byVals[i])]);
If(LCL < chartMin, chartMin = LCL );
If(UCL > chartMax, chartMax = UCL );
chartRange5% = (chartMax - ChartMin)/20;
chartMin = chartMin - chartRange5%;
chartMax = chartMax + chartRange5%;
// Generate the code to produce the LCL and UCL reference lines
Eval(
Substitute(
Expr(
op << SendToByGroup(
{:Label == __byVals__},
Y Axis[1] << {{Min( __min__ ), Max( __max__ ),
Add Ref Line( __LCL__, "Solid", "Medium Dark Red", "LCL", 1 ),
Add Ref Line( __UCL__, "Solid", "Medium Dark Red", "UCL", 1 )}}
)
),
Expr( __byVals__ ), byVals[i],
Expr( __UCL__ ), UCL,
Expr( __LCL__ ), LCL,
Expr( __min__ ), chartMin,
Expr( __max__ ), chartMax
)
);
);Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der ZeileVielen Dank Jim, das funktioniert für die Overlay-Diagramme. Können Sie eine Referenz angeben, wo ich kann ( Erfahren Sie mehr über die Einstellungen anderer Diagramme ) und zeichnen Sie auch andere Diagramme. Die Scripting-Anleitung ist nicht sehr hilfreich.
Außerdem können Sie eine Linie hinzufügen, die sicherstellt, dass die Begrenzungslinien sichtbar sind. Derzeit sind sie nicht sichtbar.
Nochmals vielen Dank für Ihre Zeit.
Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der ZeileVielen Dank Jim, das funktioniert für die Overlay-Diagramme. Können Sie auf eine Referenz verweisen, wo ich auch andere Diagramme zeichnen kann? Die Scripting-Anleitung ist nicht sehr hilfreich.
Außerdem können Sie eine Linie hinzufügen, die sicherstellt, dass die Begrenzungslinien sichtbar sind. Derzeit sind sie nicht sichtbar.
Nochmals vielen Dank für Ihre Zeit.
Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der ZeileHier ist ein Starter-Skript, das das erzeugt, was Sie für die Beispieldatentabelle wünschen.Es erzeugt einen Overlay-Plot.Um dasselbe für Ihre Variabilitätsdiagramme zu tun, sind einige Änderungen erforderlich, da jede der Plattformen unterschiedliche Optionen usw. hat.
Names Default To Here( 1 );
dt = Current Data Table();
// Get all of the by values, since separate code will have to be added for each
Summarize( dt, byVals = by( :Label ) );
// Generate the Plot code
op = Overlay Plot( X( :name ), Y( :Data ), by( :label ) );
For( i = 1, i <= N Items( byVals ), i++,
// Get the LCL and UCL values for this by group
LCL = :LCL[(dt << get rows where( :Label == byVals[i] ))[1]];
UCL = :UCL[(dt << get rows where( :Label == byVals[i] ))[1]];
// Generate the code to produce the LCL and UCL reference lines
Eval(
Substitute(
Expr(
op << SendToByGroup(
{:Label == __byVals__},
Y Axis[1] << {{Add Ref Line( __LCL__, "Solid", "Medium Dark Red", "LCL", 1 ),
Add Ref Line( __UCL__, "Solid", "Medium Dark Red", "UCL", 1 )}}
)
),
Expr( __byVals__ ), byVals[i],
Expr( __UCL__ ), UCL,
Expr( __LCL__ ), LCL
)
);
);Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der Zeile1. Ich gehe davon aus, dass Spalte Name die X-Achse ist
- Ich habe als Beispiel ein Überlagerungsdiagramm verwendet, jedes Diagramm, das einen numerischen Wert auf der Y-Achse hat (z. B. Größe oder Gewicht). Die X-Achse kann wie von Ihnen vorgeschlagen benannt werden.
2. Ihre LCL- und UCL-Werte sind alle gleich für jede der Zeilen, wo für die Zeilen, die als "Höhe" definiert sind.Wird dies der Fall sein, oder ändern sich bei einer echten Datentabelle die LCL- und UCL-Werte?
- Limits können sich für verschiedene Kategorien in der Etikettenkategorie ändern. (zur Verdeutlichung: Eine LCL/UCL für die Körpergröße, eine andere UCL/LCL für das Gewicht)
3. Wenn Sie „Overlay Plot“ sagen, beziehen Sie sich speziell auf die Overlay-Plattform in JMP oder geben Sie nur an, dass der Datenwert mit LCL und UCL überlagert wird und die Graph Builder-Plattform verwendet werden könnte?
- Ich hänge ein Diagramm als Beispiel an, das ein Overlay-Diagramm und ein Variabilitätsdiagramm mit Grenzen enthält. (Dies wurde manuell durch Hinzufügen von Linien im Plot generiert), ich suche nach ähnlichen Plots.
Vielen Dank für Ihre Zeit!!
Betreff: Zeichnen von UCL/LCL, definiert in Spalten in der Zeile1. Ich gehe davon aus, dass Spalte Name die X-Achse ist
2. Ihre LCL- und UCL-Werte sind alle gleich für jede der Zeilen, wo für die Zeilen, die als "Höhe" definiert sind.Wird dies der Fall sein, oder ändern sich bei einer echten Datentabelle die LCL- und UCL-Werte?
3. Wenn Sie „Overlay Plot“ sagen, beziehen Sie sich speziell auf die Overlay-Plattform in JMP oder geben Sie nur an, dass der Datenwert mit LCL und UCL überlagert wird und die Graph Builder-Plattform verwendet werden könnte?