Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilJMP 17.2.0
BEARBEITEN: Beispieldatendatei mit Hauptbeitrag hochgeladen.
Ich bin beim Anpassen meiner Diagramme, entweder über den Graph Builder oder über JSL (oder eine Kombination), auf ein kleines Problem gestoßen. Ich habe die JMP-Foren durchforstet und einige ähnliche Themen gefunden, aber keine Lösung, die tatsächlich für mein konkretes Ziel funktioniert.
JMP soll meine Markierungen nach Testnummer (oder im Code ist es RUN_NUM) farblich kennzeichnen, je nach Testnummer unterschiedliche Markierungsformen auswählen und dann für jede Testnummer eine quadratische Anpassungslinie zeichnen, wobei die Farbe der Linie mit der Farbe der Markierungen für jede Testnummer übereinstimmt und die Anpassungslinie für jede Testnummer immer eine gestrichelte Linie ist. Außerdem möchte ich mithilfe einer Funktion wie Zeilenfarbzuständen keine Farben dauerhaft bestimmten Tests zuweisen. Das Diagramm soll unabhängig von den Testnummern, die ich zeichne, dasselbe Farbschema verwenden, da diese Daten Teil einer wachsenden Datentabelle sind, die am Ende 100–200 Tests enthalten kann. Wenn ich beispielsweise die Tests 1–5 zeichne, möchte ich, dass sie immer in einem Farbschema wie Blau, Rot, Grün, Orange, Lila dargestellt werden, sodass, wenn ich ändere, was ich zeichne, z. B. jetzt Tests 1–4 + Test 7, das Farbschema für alle fünf geplotteten Tests dasselbe ist.
Ich kann fast alle oben genannten Funktionen umsetzen, aber die Farbcodierung der Markierungen und der Anpassungslinie ist mir nicht gelungen. Hier ist mein bisheriger Prozess im Graph Builder/JSL:
- Ich stelle meine Datenpunkte in GB dar, normalerweise vier Datenpunkte pro Test.
- Ich ziehe die „Testnummer“ in den „Overlay“-Bereich in GB. Diese Farbe codiert meine Datenpunkte pro Test.
- Ich ziehe die „Testnummer“ in den Bereich „Farbe“ in GB. Dadurch wird für jeden Test eine Form ausgewählt.
- Ich klicke auf die Option „Anpassungslinie“, die die Linie zum Diagramm hinzufügt, aber sie haben unterschiedliche Linienstile und die Farbe ist immer das JMP-Standardblau.
Mit den oben genannten Schritten bin ich also nah dran, aber noch nicht ganz am Ziel. In den JMP-Foren habe ich eine gute Möglichkeit gefunden, JSL hinzuzufügen, um den Linienstil und/oder die Farbe zu ändern, aber nicht beides gleichzeitig. Ich kann mein GB-Diagramm speichern und dann das JSL ein wenig bearbeiten, um das eine oder das andere zu erhalten.
Hinweis: Im folgenden Code Testnummer = RUN_NUM
Indem ich dies oben in meinen Diagrammcode einfüge:
dts = dt << Summary(
Group( :RUN_NUM ),
Freq( "None" ),
Weight( "None" ),
invisible
);
dlist = Column (dts, "RUN_NUM") << get values;
Close (dts, NoSave);
show (dlist);
Und ich füge dies unten in meinen Diagrammcode ein:
For (i = 0, i < N Items (dlist), i++,
gb << SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
1, //change this legend number to match what is above in graph builder...when modifying this code
Properties (i, {Marker Size(8)} )
);
})));
For (i = 0, i < N Items (dlist), i++,
gb << SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
2, //change this legend number to match what is above in graph builder...when modifying this code
Properties (i, {Line Style( 2 ), Line Width (1)} )
);
})));
Ich kann den obigen Code verwenden, um die Eigenschaften der Anpassungslinie zu ändern. Ich habe jedoch einige Macken gefunden.
- So wie es ist, ändert der obige Code den Linienstil für jede Anpassungslinie in gestrichelt
- So wie er ist, ändert der obige Code die Linienbreite für jede Anpassungslinie
- So wie es ist, sind alle Anpassungslinien aus irgendeinem Grund schwarz gefärbt
Es ist fast alles, was ich will, außer dass die Linien schwarz sind. Nächste Macke:
- Wenn ich die „Testnummer“ aus der „Farbe“-Eigenschaft in GB entferne, entsprechen alle meine Anpassungslinien nun der Farbe des Markers und ändern sich dynamisch mit jedem ausgewählten Test! Sie sind außerdem alle gestrichelt und haben die richtige Breite.
- Jetzt sind meine Markierungen alle Kreise statt einzigartiger Formen, die sich bei der Auswahl verschiedener Tests ändern, und sie ignorieren meine angegebene Markierungsgröße im Code.
Jetzt habe ich alles bis auf die Markierungsform. Hier stecke ich fest. Ich muss wohl mit einem von zwei Ergebnissen leben:
- Alles, was ich will, außer der Linie der Anpassungen, sind immer schwarze Linien
- Alles, was ich will, außer Markierungsformen sind immer Kreise (und klein)

Kennt jemand eine Möglichkeit, alle meine Wünsche für ein benutzerdefiniertes Diagramm zu erfüllen? Vielleicht verstehe ich etwas falsch? Für jede Hilfe bin ich sehr dankbar.
Einige frühere relevante JMP-Diskussionen:
- https://community.jmp.com/t5/Discussions/Match-Line-Color-of-Normal-Quantile-Plot-to-Row-Color-Set-in-Row/mp/124080
- https://community.jmp.com/t5/Discussions/Change-color-theme-in-plot-legend-of-FIt-Curve/td-p/368792
- https://community.jmp.com/t5/Discussions/assign-marker-style-line-style-by-quot-string-quot-or-special/td-p/48860
Vollständiger GB-Code:
dt = Data Table( "DT" );
//this short section makes a list of all runs/tests in the data table
//then all the runs are counted in a later section for a "for loop"
dts = dt << Summary(
Group( :RUN_NUM ),
Freq( "None" ),
Weight( "None" ),
invisible
);
dlist = Column (dts, "RUN_NUM") << get values;
Close (dts, NoSave);
show (dlist);
//below is the graph builder code
gb = Graph Builder(
Size( 850, 600 ),
Show Legend( 1 ),
Show Title( 0 ),
Show Footer( 0 ),
Fit to Window( "Off" ),
Variables(
X( :TEMP ),
Y( :CONVERSION ),
Overlay( :RUN_NUM ),
Color( :RUN_NUM )
),
Elements(
Points( X, Y, Legend( 1 ) ),
Line Of Fit(
X,
Y,
Legend( 2 ),
Degree( "Quadratic" ),
Confidence of Fit( 0 )
)
),
SendToReport(
Dispatch( {"Line Of Fit"}, "", OutlineBox, {Close( 0 )} ),
Dispatch(
{},
"TEMP",
ScaleBox,
{Min( 50 ), Max( 100 ), Inc( 5 ), Minor Ticks( 4 ),
Label Row(
{Show Major Grid( 1 ), Set Font Size( 18 ), Set Font Style( "Bold" )
}
)}
),
Dispatch(
{},
"CONVERSION",
ScaleBox,
{Min( 40 ), Max( 60 ), Inc( 5 ), Minor Ticks( 4 ),
Label Row(
{Automatic Font Size( 0 ), Show Major Grid( 1 ),
Show Minor Grid( 1 ), Set Font Size( 18 ), Set Font Style( "Bold" )}
)}
),
Dispatch(
{},
"X title",
TextEditBox,
{Set Text( "Temperature" ), Set Font Size( 20 ),
Set Font Style( "Bold" )}
),
Dispatch(
{},
"Y title",
TextEditBox,
{Set Text( "Conversion" ), Set Font Size( 20 ),
Set Font Style( "Bold" )}
),
)
);
//this loop goes through all runs and changes lines to dashed and changes their width
For (i = 0, i < N Items (dlist), i++,
gb << SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
1, //change this legend number to match what is above in graph builder...when modifying this code
Properties (i, {Marker Size(8)} )
);
}
)
)
);
For (i = 0, i < N Items (dlist), i++,
gb << SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
2, //change this legend number to match what is above in graph builder...when modifying this code
Properties (i, {Line Style( 2 ), Line Width (1)} )
);
}
)
)
);
Datenexploration und -visualisierungBetreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilKönnen Sie Beispieldaten bereitstellen?
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilIch werde versuchen, einige Daten zu bereinigen, damit ich später heute eine Beispiel-JMP-Datei veröffentlichen kann.
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilLange Verzögerung, aber ich habe den Hauptbeitrag bearbeitet und eine Datendatei mit dem Diagramm und einigen Daten hochgeladen.
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilSie möchten also einen Graph Builder erstellen können, der dynamisch so aufgebaut ist, dass Sie immer bestimmte Markierungen für bestimmte Testläufe haben und jeder Lauf je nach Reihenfolge eine „grundlegende“ Farbgebung haben sollte?

Ich würde höchstwahrscheinlich Zeilenzustände für Markierungen verwenden, wenn möglich. Dann wäre das Einzige, womit Sie sich in JSL befassen müssten, der Linienstil + die Markierungsgröße und möglicherweise die Legende.
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilDanke für die Antwort! Aufgrund meines begrenzten Verständnisses von Zeilenzuständen möchte ich sie wohl nicht unbedingt verwenden. Zeilenzustände funktionieren für diesen sehr kleinen Datensatz gut, aber meine tatsächlichen Datensätze umfassen über hundert Tests. Wenn ich Zeilenzustände zur Farbzuweisung verwende, wiederholen sich die Farben irgendwann mit leicht unterschiedlichen Schattierungen, sodass ich Tests mit Rotton 1, Rotton 2, Rotton 3 usw. habe. Wenn ich dann zufällig eine Darstellung dieser spezifischen Tests benötige, haben sie alle leicht unterschiedliche Rottöne, und es wird sehr schwierig sein, sie anhand der Farbe zu unterscheiden. Ich fände es vor, wenn das Farbschema an die Darstellung gebunden wäre, sodass das Farbschema immer gleich wäre, egal welche Teilmenge von Tests ich zeichne. d. h. dieselben Tests, die Rotton 1, Rotton 2, Rotton 3 usw. mit Zeilenzuständen wären, wären Blau, Rot, Grün usw., wobei das Farbschema an die Darstellung gebunden wäre. Ich habe oben nur die Farbe erwähnt, aber ich glaube, dass das gleiche Szenario auch für die Markierungsformen gelten würde, d. h., die Markierungsformen für den Zeilenzustand können sich in großen Datensätzen möglicherweise wiederholen, sodass es eine Teilmenge von Tests gäbe, die alle dieselben Markierungsformen hätten.
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilFür die Farbe stehen Ihnen mehr Optionen zur Verfügung und sie ist einfacher zu verwalten als Markierungen. Derzeit können Sie nur eine Spalte für Overlay verwenden, sodass Sie höchstwahrscheinlich auf den Filteränderungshandler angewiesen sind, damit alle Stile wie gewünscht funktionieren. Standardmäßig erhalten Sie ein Diagramm wie dieses

Sie könnten dann den Filteränderungshandler verwenden, um die Markierungsgröße höher und den Linienstil als Linien zu halten. Bei so etwas wird JMP von Zeit zu Zeit Fehler machen und vergessen, dass es Farbe hinzufügen sollte.
</CODE></PRE>
<P>Ich denke, Sie könnten auch versuchen, mit dem Albtraum namens Legend umzugehen, aber ... ich würde es nach Möglichkeit vermeiden. Es ist eines der schlimmsten (oder möglicherweise das schlimmste) Dinge im Graph Builder, die Sie manipulieren können.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-849266" slang="en-US" mode="CREATE">Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen Linienstil</LINGO-SUB><LINGO-BODY id="lingo-body-849266" slang="en-US" mode="CREATE"><P>Die Markierungsgröße kann über das Rechtsklickmenü gesteuert werden und dient als Steuerung für die Rahmenbox.</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1742669047885.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1742669047885.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1742669047885.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1742669047885.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_0-1742669047885.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/74118i18BC8FCF0D2275C2/jthi_0-1742669047885.png" role="button" title="jthi_0-1742669047885.png" alt="jthi_0-1742669047885.png" /></span></SPAN></SPAN></SPAN></SPAN></P>
<P>Konnte aber nichts Ähnliches für Linien finden... also könnte so etwas vielleicht funktionieren</P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = Open("$DOWNLOADS/DT.jmp");
gb = dt << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:TEMPERATURE), Y(:CONVERSION), Overlay(:RUN_NUM), Color(:RUN_NUM)),
Elements(Points(X, Y, Legend(5)), Line Of Fit(X, Y, Legend(7), Degree("Quadratic"), Confidence of Fit(0))),
Local Data Filter(Add Filter(columns(:RUN_NUM), Display(:RUN_NUM, N Items(7)))),
SendToReport(Dispatch({}, "Graph Builder", FrameBox, {Marker Size(6), Marker Drawing Mode("Normal")}))
);
l_expr = Expr(Legend Model(7));
Summarize(dt, c = By(:RUN_NUM));
For Each({item}, c,
cur_expr = EvalExpr(Properties(0, {Line Style("Dashed")}, Item ID(Expr(item), 1)));
Insert Into(l_expr, Name Expr(cur_expr));
);
d_expr = EvalExpr(
Dispatch({}, "400", ScaleBox,
{Expr(Name Expr(l_expr))}
)
);
Eval(EvalExpr(Send(gb, Expr(Name Expr(d_expr)))));Names Default To Here(1);
dt = Open("$DOWNLOADS/DT.jmp");
gb = dt << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:TEMPERATURE), Y(:CONVERSION), Overlay(:RUN_NUM), Color(:RUN_NUM)),
Elements(
Points(X, Y, Legend(5)),
Line Of Fit(X, Y, Legend(7), Degree("Quadratic"), Confidence of Fit(0))
)
);
ldf = gb << Local Data Filter(Add Filter(columns(:RUN_NUM), Display(:RUN_NUM, N Items(7))));
Eval(EvalExpr(
f = Function({a},
gb_rep = Expr(Report(gb));
gb << inval;
fb = gb_rep[FrameBox(1)];
segs = fb << Find Segs;
For Each({seg}, segs,
Match(seg << class name,
"MarkerSeg", seg << Set Marker Size(10),
"LineSeg", seg << Set Line Style("Dashed")
);
);
);
));
rs = ldf << Make Filter Change Handler(f);
f(1); // to initialize at least once
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilWenn es für Sie in Ordnung ist, die Einstellungen interaktiv über eine GUI anzuwenden, können Sie sich die GraphBuilder-Symbolleiste im JMP Marketplace ansehen.
Dieses Add-In gibt Ihnen die volle Kontrolle über die Farb- und Markierungseinstellungen eines GraphBuilder-Diagramms.
Sie können die Einstellungen synchron auf alle Elemente eines Diagramms anwenden – oder unterschiedliche Einstellungen auf unterschiedliche Elemente anwenden. (Markierungen mit reduzierter Deckkraft – Linien mit 100-facher Deckkraft).
Die Einstellung wird auf die ausgewählten Elemente angewendet. Wenn „Zyklus“ aktiviert ist, wechselt die Auswahl direkt nach der Anwendung einer Einstellung zum nächsten Element. Wenn kein Element ausgewählt ist, wird die Einstellung auf alle Elemente angewendet:
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilDanke für die beiden Antworten. Ich werde mir etwas Zeit nehmen und damit herumexperimentieren, um zu sehen, wie das bei mir funktioniert.
Betreff: Erzwingen Sie, dass JMP die Farbe der Anpassungslinie an die Markierungsfarbe anpasst, zusammen mit einem erzwungenen LinienstilVielen Dank für die Informationen zu diesem Add-In. Ich werde ein bisschen herumprobieren und sehen, ob es für mich funktioniert, und dann berichten.