Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Meine Datentabelle enthält part_ID-Einträge in Spalte 1. In Spalte 2 erscheinen die 5 zusammenfassenden Parameter – Min, Q1, Median Q3, Max und die Testgrenzen LSL, USL. In Spalte 1 wird die Teile-ID siebenmal wiederholt (entsprechend 5 Zusammenfassungsparametern + LSL und USL, insgesamt 7), danach erscheint die nächste Teile-ID (und entsprechende 7 Zahlen in Spalte 2).
Ich möchte das Format der Datentabelle nicht ändern (dh nicht transponieren).
Ich möchte ein Boxplot-Trenddiagramm (mit Teile-ID auf der X-Achse) unter Verwendung der 5 Zusammenfassungsparameter und der Grenzwerte erstellen. Wie geht das über JSL?
Automatisierung und SkripterstellungWindowsBetreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Gibt es einen bestimmten Grund dafür, das Datenformat nicht in ein besseres zu ändern?
Aus

zu etwas, das einfacher zu verwalten ist

Wenn Sie keinen Indikator dafür haben, welche Zeile welche ist, sind Sie dann sicher, dass sie immer in der gleichen Reihenfolge sind?
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi Danke. Meine Originaldaten liegen in Form Ihrer unteren Tabelle vor, zusätzlich jedoch mit dem Namen des gemessenen Parameters als zusätzlicher Spalte. In dieser Form weiß ich, wie man die Boxplots mit den 7 Parametern erstellt.
Ich verwende die Funktion Summary() von JMP, um meine Daten in Form Ihrer Top-Tabelle abzurufen.
Ich benötige dieses Formular, um andere Diagramme im gewünschten Format darzustellen, in denen die gemessenen Parameterdaten (z. B. Ihre Spalte 3 in der oberen Tabelle) in einer Spalte angezeigt werden. Es gibt mehrere gemessene Parameter für dasselbe Teil mit unterschiedlichen Bereichen (die in separaten Spalten angezeigt werden), die ich auf der Y-Achse trage, und nur wenn ich die Daten für verschiedene gemessene Parameter in Spalten habe, kann ich für sie unterschiedliche Skalierungen auf der Y-Achse haben JMP (mit Teile-ID auf der X-Achse). Verschiedene gemessene Parameter werden korreliert und eine solche Darstellung hilft, die relativen Trends zu verstehen.
Hope erklärt oben, warum meine Daten im Format Ihrer Top-Tabelle vorliegen.
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Dieser Beitrag könnte einige Ideen liefern Erstellen eines Boxplots aus bereits zusammengefassten Werten .
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi . Danke. Ich habe mir das Rezept in deinem Link angesehen. Die beschriebene Methode scheint nur zu funktionieren, wenn die Daten das Format Ihrer zweiten Tabelle haben, was ich nicht möchte.
Wenn es möglich ist, JMP anzuweisen, Boxplots mit Min, Q1, Median, Q3, Max zu erstellen, die in einer angrenzenden Spalte (Beschriftung im angehängten Beispieldatensatz) für eine bestimmte Teile-ID (Spalte 1 im Anhang) angegeben sind, anstatt dass JMP berechnet Wenn ich diese Werte selbst aus der Verteilung der Werte für jeden Teil betrachte, denke ich, dass ich bekommen werde, was ich will.Ist dies über JSL möglich?
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Sie könnten versuchen, den Boxplot mit Rect() und Line() zu erstellen (es gibt auch Boxplot-Segmente, die funktionieren könnten, aber Sie müssen die Daten simulieren oder Häufigkeiten verwenden).
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi Danke, ich denke, mit dem Boxplot-Seg kann ich machen, was ich will.
Aus dem Skriptindex-Beispiel ist mir nicht klar, wie man den Boxplot für jede Teile-ID (auf der X-Achse) wie in meinen Beispieldaten (zuvor angehängt) generieren würde.
Muss ich die Teile-ID durchgehen? Wie entscheidet man in diesem Fall über die Rahmengröße und den Maßstab?
Es wäre nützlich, wenn ich anhand meiner Beispieldaten ein grundlegendes Beispiel erhalten könnte.

Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Es kann sein, dass das Box-Plot-Segment nur zum Erstellen eines einzelnen Box-Plots für eine einzelne Frame-Box verwendet werden kann und sich in der Mitte befindet
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi Danke.
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Wenn Sie auf das vorhandene Datenformat angewiesen sind, können Sie der Tabelle trotzdem neue Spalten hinzufügen. Sie können für jede Statistik eine Spalte erstellen, um der ersten Option im vorherigen Link zu folgen, oder zwei Spalten hinzufügen (Wert + Häufigkeit) und dann der zweiten Option folgen. Oder bauen Sie es mithilfe eines grafischen Skripts vollständig individuell aus verschiedenen Teilen zusammen
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi . Der einzige Grund dafür, dass die Daten im Format Ihrer oberen Tabelle (und meiner beigefügten Tabelle) vorliegen, besteht nur darin, dass ich in einem Gruppierung-nach-Y-Diagramm unterschiedliche Maßstäbe haben kann.
https://community.jmp.com/t5/Discussions/Can-you-change-y-axis-scale-independently-from-other-y-axis/td-p/17649
Ich möchte Ihnen die Seite-Option nicht zeigen, also bin ich gefolgt @txnelson 's Vorschlag, die relevanten Daten in die von ihm vorgeschlagene Form zu bringen, dh in separate Spalten (vorausgesetzt, ich habe seinen Vorschlag richtig verstanden).
Wenn es eine andere Möglichkeit gibt, ohne Page oder zu verwenden @txnelson 's Vorschlag (ein weiterer ähnlicher Hier ), Ich bin ganz Ohr
.
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi Vielen Dank für Ihre Vorschläge zu diesem Thema, auf das ich zurückkomme, da ich das Datenformat wie in meinen zuvor in diesem Thread angehängten Beispieldaten beibehalten muss. Mit dem folgenden Skript kann ich fast alles bekommen, was ich brauche (es könnte bessere Möglichkeiten geben, dies zu tun, aber unten ist meine Geschichte). Ich brauche Hilfe bei zwei Dingen.
- Ich muss eine vertikale schwarze Linie zeichnen, die Min und Max für jede Teile-ID verbindet (derzeit nicht im lokalen Datenfilter ausgewählt, linkes Diagramm unten). Wenn „Min/Max“ im lokalen Datenfilter (rechtes Diagramm unten) ausgewählt ist, werden sie durch eine vertikale schwarze Linie verbunden (anstelle der schwarzen Punkte jetzt im rechten Diagramm). Ich erreiche fast die Anatomie eines Boxplots Meiner Meinung nach reicht es aus und erfüllt seinen Zweck. Wie erhalte ich diese vertikale Linie über JSL für jede Teile-ID (V-Linie ()?)?
- Zweitens werden meine gemessenen Parameter (Strom, Widerstand in den Beispieldaten) in den tatsächlichen Daten >40 sein. Daher möchte ich die Legendenfarbeinstellung nicht so vornehmen, wie ich es in meinem Skript getan habe. So stellen Sie die Legendenfarbe standardmäßig auf Schwarz ein (ansonsten färbt JMP jede Y-Gruppe anders und nicht so, wie ich die Markierungsfarben eingestellt habe).
Names Default To Here (1);
clear log ();
dt = Current Data Table ();<BR />
//Set LSL/USL marker and color
dt << Row Selection(
Select where( Contains( :Label, "LSL" ) | Contains( :Label, "USL" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Red" );
dt << Clear Select;<BR />
// Set Q1/Q3 marker and color
dt << Row Selection(
Select where( Contains( :Label, "Q1" ) | Contains( :Label, "Q3" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Black" );
dt << Clear Select;<BR />
//Set Median arker and color
dt << Row Selection(
Select where( Contains( :Label, "Median" ) ),Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 0) << Colors( "Blue" );
dt << Clear Select;<BR />
// Plot chart
gb = Graph Builder(
Size( 404, 412),<BR /> Show Control Panel( 0 ),
Variables( X( :partID ), Y( :Resistance ), Y( :Current ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 37 ), Jitter( "None" ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 35 ), Jitter( "None" ) ) ),
Local Data Filter(
Add Filter(
columns( :Label ),
Where( :Label == {"LSL", "Median", "Q1", "Q3", "USL"} )
)
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
37,
Properties( 0, {Line Color( 0 )}, Item ID( "Resistance", 1 ) )
), Legend Model(
35,
Properties( 0, {Line Color( 0 )}, Item ID( "Current", 1 ) )
)}
)
)
);

Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Dieses oben hinzugefügte zusätzliche Skript liefert mithilfe von V Line () das, was gewünscht wird.
Beispiel nur für PartID =1 (Tabelle unten). Wie kann man das in einer Schleife automatisch machen?
gbr = gb << report;
// For FrameBox (1)
Q1_Part1_Para1 = 2.75;
Q3_Part1_Para1 = 3.1;
// For FrameBox (2)
Q1_Part2_Para1 = 250;
Q3_Part2_Para1 = 302;
PartNo = 1;
Eval(EvalExpr(gbr [Framebox (1)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part1_Para1, Q3_Part1_Para1);
)));
Eval(EvalExpr(gbr [Framebox (2)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part2_Para1, Q3_Part2_Para1);
)));
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Sie können Summarize() verwenden, um eindeutige PartID-Werte abzurufen. Dann können Sie die Datentabellen-Subskription mit einer Kombination aus Loc() verwenden, um während der Schleife Zeilen für eine bestimmte Teil-ID abzurufen. Berechnen/erhalten Sie dann Ihre Werte und fügen Sie Ihre Zeilen hinzu
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi
>> Sie können Summarize() verwenden, um eindeutige PartID-Werte abzurufen.
OK
>>Dann können Sie die Datentabellen-Subskription mit einer Kombination aus Loc() verwenden, um während der Schleife Zeilen für eine bestimmte Teil-ID abzurufen.
Habe Loc() nie verwendet. Gibt mir das die X-Koordinate für jede Teil-ID? Ein Beispiel mit meinen Beispieldaten wäre sehr nützlich.
>> Berechnen/erhalten Sie dann Ihre Werte und fügen Sie Ihre Zeilen hinzu.
Meinen Sie damit, die X-Koordinaten für jedes Teil zu berechnen, da die anderen Zahlen Min, Max, Q1, Q3 und Median bereits berechnet wurden?
Muss ich außerdem jede FrameBox durchlaufen, oder gibt es eine einfachere Alternative?
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Ihre Teile-IDs sind im Diagramm in derselben Reihenfolge wie in der Tabelle (und in der Zusammenfassung), sodass Sie bereits über die X-Koordinate verfügen. Wenn Sie alle benötigten Werte bereits berechnet haben, können Sie sie einfach aus der Datentabelle abrufen. Unten finden Sie ein Beispiel für die Verwendung von „Summarize“, „Loc“ und Datentabellen-Subskription
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, uniq_vals = by(:age)); // Summarize returns characters
For Each({uniq_val}, uniq_vals,
val_rows = Loc(dt[0, "age"], Num(uniq_val));
show(val_rows);
f_rows = val_rows[Loc(dt[val_rows, "sex"], "F")];
show(f_rows);
f_heights = dt[f_rows, "height"];
show(f_heights);
);
Sie haben nur zwei Frame-Boxen, aber mehrere Zeilen, die Sie darin hinzufügen möchten, sodass es nicht nötig sein sollte, FrameBoxes zu durchlaufen (eine Schleife über die partIds).
Bearbeiten:
Anstelle von Loc können Sie auch << Get Rows Where verwenden, da dies normalerweise einfacher zu verwenden ist
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi . OK. Danke. Ich werde es versuchen (komme wieder, wenn ich nicht weiterkomme).
In meinem tatsächlichen Datensatz beträgt die Anzahl der gemessenen Parameter >50 (könnte mehr sein). Wenn ich also alle 50 Parametertrenddiagramme übereinander darstellen würde, gäbe es 50 FrameBoxen, daher meine Frage zum Durchlaufen von FrameBoxen.
Außerdem empfehle ich für meine PartID = 1 die Verwendung von X = 0 für die X-Koordinate in V Line () in meinem obigen Skript. Soll das so sein (dh die x-Koordinate für die V-Linie beginnt bei 0 und nicht bei 1, obwohl sie 1 anzeigt)?
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Wenn es so viele Parameter gibt, ist eine zusätzliche Schleife eine gute Idee.
Und für die Sache mit X = 0 würde ich vorschlagen, es auszuprobieren. Sehen Sie, was passiert (auf diese Weise lernen Sie normalerweise am meisten). Anhand der X-Achsen-Einstellungen können Sie auch erkennen, dass der Wert 0 und die Bezeichnung 1 ist

Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?@jthi OK. Danke. Noch etwas stört mich. Ich habe den Jitter in meinem Skript ausgeschaltet, aber die oberen (Q3) und unteren (Q1) Marker erscheinen immer noch mit einem Versatz. Sie können mein Skript zuvor mit der angehängten Datentabelle ausführen, um dies zu testen (ich verwende JMP 16.2).
Gibt es eine andere Jitter-Einstellung, die ich ausschalten muss?
Der Jitter/Versatz ist deutlicher zu erkennen, wenn ich Folgendes verwende, um Markierungen für Q1 und Q3 zu setzen (ich versuche nur, die Kastenform zu erhalten, bevor ich die vertikale Linie zeichne), aber selbst mit horizontalen Markierungen sehe ich einen gewissen Versatz. Vermisse ich etwas?
// Q1/Q3 marker and color
dt << Row Selection(Select where(Contains( :Label, "Q3" ) ),Match case( 1 ),Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Π" ) << Colors( "Black" );
dt << Clear Select;
dt << Row Selection(Select where( Contains( :Label, "Q1" ) ), Match case( 1 ), Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Џ" ) << Colors( "Black" );
dt << Clear Select;
Korrektur: Der Versatz scheint auf die Darstellung des Diagramms durch JMP zurückzuführen zu sein. Durch horizontales Strecken des Diagramms wird der Versatz fixiert.
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?auf diese Weise überprüfen
frame = (gbr)[FrameBox( 1 )];
seg = (frame << FindSeg( Marker Seg( 1 ) ));
{method, axis, limit, spacing, seed} = seg << Get Jitter();Ich erhalte den Wert „Seed“, selbst nachdem ich Jitter auf „Keine“ gesetzt habe
{"None", "XY", 1, 0, 184430754}Sind meine Punkte verwackelt (sie scheinen so zu sein)?
Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Ihr Jitter ist auf „Keine“ eingestellt

was meiner Meinung nach bedeutet, dass kein zufälliges Rauschen hinzugefügt werden sollte

Betreff: Wie erstelle ich Boxplots, wenn sich 5 zusammenfassende Parameter (Min, Q1, Median Q3, Max) und Grenzwerte (LSL, USL) in einer Spalte befinden, die einer bestimmten Teil-ID entspricht?Dieses zusätzliche Skript, das vom früheren Skript (in diesem Thread) aufgerufen wurde, macht das, was ich wollte. Das Skript ist spezifisch für meine Daten, zeigt aber eine Möglichkeit, V Line() innerhalb einer Schleife über verschiedene Frameboxen hinweg zu zeichnen.
Wenn Sie im Graphbuilder zu BoxPlots wechseln und im lokalen Datenfilter Q1, Q2 und Median ausgewählt haben, erhalten Sie die richtigen Boxplots. Die V-Linie () verbindet Max und Min und vervollständigt die Anatomie eines Boxplots.Da nur Q1 und Q2 ausgewählt sind und der Rest der Daten ignoriert wird, erhält man meiner Meinung nach das richtige Feld (die Auswahl weiterer Parameter wie „Min“ und „Max“ im lokalen Datenfilter ergibt ein falsches Feld).
Names Default To Here (1);
Clear Log ();
setVLines_atMinMax = Function ( {gbr, FrameboxNo, PartNo, Min, Max}, {},
Eval(EvalExpr(gbr [Framebox (FrameboxNo)]<< Add graphics Script (
V Line (Expr(PartNo-1), Expr(Min), Expr(Max));
)));
);
gbr = gb << report;
nParts =5;
nc = ncols (dt); //number of coulms in my data table
For (j =1, j <=(nc-1), j++,
FrameboxNo = j;
for ( i = 1, i <= nParts, i++,
ind = (7*i-3); //show (ind);
ind_next = (7*i -3) + 1; //show (ind_next);
PartNo = Num(:PartID[ind]); //show (PartNo);
Min = Column(nc) [ind]; show (Min);
Max = Column(nc) [ind_next]; show (Max);
setVLines_atMinMax (gbr, FrameboxNo, PartNo, Min, Max);
);
nc = nc-1;
);
//show (FrameboxNo); show (nc);
