Diagrammachsen und -titel als Variablen festlegenHallo zusammen, Neuling hier:
Ich arbeite mit einer Reihe von Daten in einem Prozess, der sich voraussichtlich viele Male wiederholen wird. Daher versuche ich, die Einrichtung so gut wie möglich zu automatisieren. Im Moment arbeite ich an einer Datenpräsentation und benötige Ihre Hilfe dabei, die Achsentitel eines Diagramms abhängig vom Inhalt der Zellen variabel zu gestalten.
Als Beispiel habe ich die folgenden Daten:

Aus diesen Daten möchte ich ein Diagramm zeichnen, das „Res“ für jeden „Col A“-Wert zeigt, sowie eine Reihe von Referenzlinien, die „Ref“ (und seine Randbedingungen „+/-uref“ und „rob“ und seine) zeigen Randbedingungen „+/- urob“.
Derzeit sieht das Skript wie folgt aus:
dt = Current Data Table();
Graph Builder(
Size( 743, 472 ),
Show Control Panel( 0 ),
Variables(
X( :COLA, Order By( :Res, Ascending, Order Statistic( "Mean" ) ) ),
Y( :Res ),
Interval( :Ures )
),
Elements( Points( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"COLA",
ScaleBox,
{Label Row(
{Label Orientation( "Vertical" ), Set Font Size( 12 ),
Set Font Style( "Italique" )}
)}
),
Dispatch(
{},
"Res",
ScaleBox,
{Min(), Max(), Inc(), Minor Ticks( 1 ),
Add Ref Line( dt[1, 11], "Solid", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 9], "Dotted", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 10], "Dotted", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 4], "Solid", "Dark Red", "", 1 ),
Add Ref Line( {dt[1, 7], dt[1, 8]}, "Solid", "Medium Dark Red", "", 1, 0.15 ),
Add Ref Line( dt[1, 7], "Dotted", "Dark Red", "", 1 ),
Add Ref Line( dt[1, 8], "Dotted", "Dark Red", "", 1 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Analyte res" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "COLA" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Units of Res (g/m3)" )} ),
Dispatch( {}, "400", LegendBox, {Legend Position( {7, [-1, -3]} )} )
)
);
Das funktioniert gut und ist flexibel genug, um die Referenzlinien im Diagramm je nach Bedarf entsprechend den Zellwerten ändern zu können.
Nun möchte ich auch, dass die Titel das Gleiche tun wie die Referenzzeilen. Idealerweise könnte ich meiner JMP-Tabelle eine erste Spalte hinzufügen, die wir „Info“ nennen und die Informationen zum untersuchten Analyten (Name, zur Messung verwendete Einheiten usw.) und den Titel des Diagramms enthalten (und Achsen), um die Informationen aus diesen Zellen herauszuziehen (wie es derzeit die Referenzlinien tun) und diese Informationen im Text zu verwenden.
Wenn ich zum Beispiel in meiner „Info“-Spalte „Zr4+“ habe, möchte ich, dass das endgültige Diagramm nach dieser Zelle sucht und sie verwendet, um sich selbst oder eine ihrer Achsen zu beschriften. So dass ich die Zelle dann in ändern kann „Br7-“ und wenn ich das Skript das nächste Mal ausführe, wird das neue Diagramm mit „Br7-“ gekennzeichnet.
Ist das möglich?
Bonuspunkte, wenn die Variable in einen längeren Text eingefügt werden kann, z. B. die y-Achse ist „Zr 4+ (mg/l)“ und wechselt dann zu „Br7- (mg/l)“
MassenanpassungWindowsBetreff: Diagrammachsen und -titel als Variablen festlegenDanke dafür,
Ich werde tun, was Sie sagen, und den Leitfaden lesen. Tatsächlich ist meine Arbeit mit JSL das erste Mal in meinem Leben, dass ich mich tatsächlich mit Skripten/Codieren beschäftige, daher gibt es noch viele spezifische Logiken, die ich lernen muss!
Betreff: Diagrammachsen und -titel als Variablen festlegenDas Problem, das Sie anscheinend haben, besteht darin, wie Sie der TextEditBox() das ordnungsgemäß syntaxierte Element bereitstellen.
Die Spezifikation für Set Text, wie sie im Scripting Index zu finden ist, lautet:

Grundsätzlich muss also ein „String“ bereitgestellt werden.In JSL kann so ziemlich alles in einen String eingefügt werden.Aus dem Beispiel im Beispielskript
gbr[TextEditBox(1)] << set text(column(dt,"info")[1]);
Der Wert aus der ersten Zeile der Spalte „Info“ wird an TextEditBox() gesendet, und da die Spalte „Indo“ den Modellierungstyp „Zeichen“ hat, sind die Werte in jeder Zelle ein „String“.
JSL ermöglicht den Aufbau von Strings auf viele verschiedene Arten.Ich empfehle Ihnen dringend, sich die Zeit zu nehmen, das Skripthandbuch zu lesen, das Sie in der JMP-Dokumentationsbibliothek finden und im Pulldown-Menü „Hilfe“ finden.
Aber zur einfachen Veranschaulichung: Wenn Sie „Graph 5 Analysis Res“ haben möchten, könnte es einfach als angegeben werden
gbr[TextEditBox(1)] << set text( "Graph 5 " || column(dt,"info")[1]);
Dabei handelt es sich bei der an TextEdibox() übergebenen Zeichenfolge um eine Zeichenfolge, die aus der Verkettung der Zeichenfolge „Graph 5“ mit der Zeichenfolge aus der Zelle aus der ersten Zeile der Spalte „Info“ besteht.
Betreff: Diagrammachsen und -titel als Variablen festlegenHallo Jim,
Ich habe etwas mehr mit dem Drehbuch und den Achsentiteln herumgespielt.
Die von Ihnen bereitgestellte Lösung eignet sich hervorragend für grundlegende Dinge. Ich habe mich gefragt, ob es eine Möglichkeit gibt, ein variables Element und ein festes Element in den Teil „Text festlegen“ einzuführen.
Schließlich ziehe ich aus dem Skript, an dem Sie mir bei der Arbeit geholfen haben, drei oder vier verschiedene Diagramme. Jetzt möchte ich, dass der Titel für jedes Diagramm Text aus einer Zelle zieht und ihn in einen anderen Text einfügt (aus einer anderen Zelle oder direkt geschrieben). In ein Drehbuch bin ich nicht wählerisch.
Um mich zu erklären: Derzeit lautet der Titel meines Diagramms „analyte res“ (was meiner vorherigen Position bereits um Längen voraus ist). Ich würde gerne noch einen Schritt weiter gehen und so etwas wie „Graph 5: [Analyte res]“, so dass ich einfach den Teil „analyte res“ ändern kann und der Titel geändert wird. In ähnlicher Weise wäre es schön, die y-Achse mit „[Analyt] [gemessene Menge (Masse, Konzentration, Volumen, ...)] [Einheit (g, mg/L, cm3 …)“ beschriften zu können. )]“ sodass ich dann jede der drei Variablen in ausgewählten Zellen entsprechend meinen Anforderungen für jedes verschiedene Diagramm ändern kann.
Ich habe mit dem Parameter „Text festlegen“ herumgespielt, aber ein gemischtes System wie dieses (oder sogar das Ziehen aus mehreren Zellen) scheint ihm nicht zu gefallen. Daher besteht mein vielversprechendster Workaround darin, einfach ein Textfeld neben dem Titel und der Y-Achse hinzuzufügen, obwohl das natürlich keine elegante Lösung ist und ich vermute, dass ich in bestimmten Fällen aufpassen muss, dass es nicht zu Überschneidungen zwischen den beiden Textfeldern kommt. ...
Irgendwelche Ideen?
Betreff: Diagrammachsen und -titel als Variablen festlegen)Lieber Jim, danke dafür, das reicht!
Betreff: Diagrammachsen und -titel als Variablen festlegenIch habe Ihrer Datentabelle eine neue Infospalte hinzugefügt

Und haben Ihr Skript so geändert, dass es zum Abrufen der Werte für die Beschriftungen verwendet wird.Ich habe auch Ihr Skript geändert, um eine direktere Methode zum Hinzufügen der Referenzlinien zum Diagramm zu verwenden.

Names Default To Here( 1 );
dt = Current Data Table();
gb = dt << Graph Builder(
Size( 743, 472 ),
Show Control Panel( 0 ),
Variables( X( :COLA, Order By( :Res, Ascending, Order Statistic( "Mean" ) ) ), Y( :Res ), Interval( :Ures ) ),
Elements( Points( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch( {}, "COLA", ScaleBox, {Label Row( {Label Orientation( "Vertical" ), Set Font Size( 12 ), Set Font Style( "Italique" )} )} ),
Dispatch( {}, "Res", ScaleBox, {Min(), Max(), Inc(), Minor Ticks( 1 )} ),
Dispatch( {}, "400", LegendBox, {Legend Position( {7, [-1, -3]} )} )
)
);
gbr = gb << report;
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 11], "Solid", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 9], "Dotted", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 10], "Dotted", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 4], "Solid", "Dark Red", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( {dt[1, 7], dt[1, 8]}, "Solid", "Medium Dark Red", "", 1, 0.15 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 7], "Dotted", "Dark Red", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 8], "Dotted", "Dark Red", "", 1 );
gbr[TextEditBox(1)] << set text(column(dt,"info")[1]);
gbr[TextEditBox(3)] << set text(column(dt,"info")[2]);
gbr[TextEditBox(4)] << set text(column(dt,"info")[3]);