Scripters Club-Aufzeichnung: JSL im Graph BuilderVideo 1
Moderator @Emmanuel_Romeu
Video 2
Moderator: @jthi
Betreff: Scripters Club-Aufzeichnung: JSL im Graph BuilderVon mir verwendetes Skript
Betreff: Scripters Club-Aufzeichnung: JSL im Graph BuilderEinige Fragen aus dem Teams-Chat
Frage 1:
Gibt es einen XPath-Befehl, der entspricht
Dispatch( {}, "X title", TextEditBox,
Antwort 1:
Am einfachsten lässt sich das prüfen, indem Sie << Get XML verwenden und prüfen, ob Sie dort „X title“ finden können. Das ist nicht möglich (diese „Anzeigeelemente“ könnten mit dem helpKey-Attribut identisch sein, wurden aber einfach nicht zu allem hinzugefügt).


Sie können jedoch einen komplizierten XPath erstellen, um die Textbearbeitungsfelder an den Achsen zu erhalten (ich glaube, die X-Achse kommt immer zuerst).
GraphBuilderAxisBox <GRAPHBUILDERCOMPONENTBOX leftoffset="47" topoffset="435" width="478" height="19">
<GRAPHBUILDERTITLEBOX width="478" height="19">
<TEXTEDITBOX leftoffset="223" topoffset="0" width="31" height="19">My X</TEXTEDITBOX>
</GRAPHBUILDERTITLEBOX>
</GRAPHBUILDERCOMPONENTBOX>
<GRAPHBUILDERCOMPONENTBOX leftoffset="47" topoffset="408" width="478" height="27">
<GRAPHBUILDERAXISBOX width="478" height="27">
<AXISBOX width="478" height="27" charid="1000"></AXISBOX>
</GRAPHBUILDERAXISBOX>
</GRAPHBUILDERCOMPONENTBOX>
Sie können Ihren XPath auf der Suche nach GraphBuilderComponentBox + GraphBuilderAxisBox und davor GraphBuilderComponentBox + GraphBuilderTitleBox basieren.
//GraphBuilderComponentBox[GraphBuilderAxisBox]/preceding-sibling::GraphBuilderComponentBox[1]/GraphBuilderTitleBox/TextEditBox
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3))),
SendToReport(
Dispatch({}, "X title", TextEditBox, {Set Text("My X")}),
Dispatch({}, "Y title", TextEditBox, {Set Text("My Y")})
)
);
nw = New Window("gbscript", << type("Script"), << Language("XML"),
Report(gb) << Get XML;
);
axis_title_tebs = Report(gb) << XPath("//GraphBuilderComponentBox[GraphBuilderAxisBox]/preceding-sibling::GraphBuilderComponentBox[1]/GraphBuilderTitleBox/TextEditBox");
axis_title_tebs[1] << Set Text("XXXXX");
axis_title_tebs[2] << Set Text("YYYYY");
Write();
Frage 2:
Diese Frage bezieht sich jedoch eher auf Graph Builder und nicht direkt auf Skripte. Könnten Sie bitte zeigen, wie man eine Probe im Diagramm hervorhebt oder identifiziert? Und wie man nur einer der Proben und zusätzlich einigen bestimmten Proben eine Beschriftung hinzufügt.
Antwort 2:
Verschiedene Datentypen (und JMP-Versionen) können unterschiedliche Beschriftungstechniken erfordern. Im schlimmsten Fall müssen Sie dies per Skript tun, aber normalerweise ist dies nicht erforderlich.
Ich gehe von JMP18 und einfachen Daten aus. Ich habe ein Diagramm wie dieses und möchte den hervorgehobenen Punkt beschriften und einfärben

Durch einfaches Beschriften der Zeile und Hinzufügen der Farbe des Zeilenstatus wird sie wie folgt hervorgehoben

Dieses Add-In wurde auch erwähnt Column Quick Swapper - einfaches Ändern mehrerer Y- und X-Achsenspalten im Graph Builder
Betreff: Scripters Club-Aufzeichnung: JSL im Graph BuilderDanke für die Antworten.
Ich frage mich, warum es nichts gibt wie:
current report() << XPath("//TextEditBox[@type='X title']")
realer Anwendungsfall:
Holen Sie sich den Titel der unteren Y-Achse in einem Diagramm mit 2 Beschriftungen für die X-Achse und 2 Beschriftungen für die Y-Achse
Dispatch( {}, "Y 1 title", TextEditBox,ist wunderbar im Vergleich zum Erraten des richtigen Eintrags in dieser Liste:
axis_title_tebs = Report(gb) << XPath("//GraphBuilderComponentBox[GraphBuilderAxisBox]/preceding-sibling::GraphBuilderComponentBox[1]/GraphBuilderTitleBox/TextEditBox");
Betreff: Scripters Club-Aufzeichnung: JSL im Graph BuilderMan kann es immer noch ziemlich robust machen
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(528, 448),
Show Control Panel(0),
Variables(X(:sex), X(:age), Y(:weight), Y(:height), Overlay(:sex)),
Elements(Position(1, 1), Points(X, Y, Legend(24))),
Elements(Position(1, 2), Points(X, Y, Legend(25))),
Elements(Position(2, 1), Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
Elements(
Position(2, 2),
Points(X, Y, Legend(16)),
Line Of Fit(X, Y, Legend(17))
)
);
axis_title_tebs = Report(gb) << XPath("//GraphBuilderComponentBox[GraphBuilderAxisBox]/preceding-sibling::GraphBuilderComponentBox[1]/GraphBuilderTitleBox/TextEditBox");
xcount = gb << Get N Positions("X");
firstyaxis = axis_title_tebs[xcount + 1];
Show(firstyaxis << get text);
Write();
Schade, dass es „Y 1-Titel“ und nicht „Y-Titel“ heißt (oder vielleicht sollte es immer „Y 1-Titel“ heißen und wir sollten nicht einmal nur „Y-Titel“ haben), also wird es anders sein, wenn Sie eine oder mehrere Y-Achsen haben.
Betreff: Scripters Club-Aufzeichnung: JSL im Graph BuilderHm ...
es macht immer Spaß, diese Bonus-Analyse-Herausforderung „kostenlos“ zu bekommen
- neben der Analyse werden Sie "bezahlt";)
Betreff: Scripters Club-Aufzeichnung: JSL im Graph BuilderEinige Links aus dem Scripting Guide (nicht unbedingt direkt mit JSL für Graph Builder verbunden)
Betreff: Scripters Club-Aufzeichnung: JSL im Graph BuilderSeit JMP18 funktionieren die By-Variablen etwas anders und es gibt neue Optionen. Wenn Sie das Gefühl haben, dass Sie By-Variablen häufig verwenden, empfehle ich Ihnen, Group Platform aus dem Scripting-Index zu überprüfen. Es enthält beispielsweise „Group Platform“, was von Zeit zu Zeit hilfreich sein kann, da Sie steuern können, welche Referenz Sie erhalten (höchste Ebene oder alle Plattformen in einer Liste).

Es gibt ähnliche Überlegungen zu Where Filter by Value Using a Where Statement (jmp.com) . Eine solche Überlegung könnte sein, welche Datentabelle verwendet wird oder welcher Where-Ausdruck
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gbs = dt << Graph Builder(
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
By(:sex)
);
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
Where(:sex == "F");
);
show(gbs << Get Data Table);
show(gb << Get Data Table);
show(gbs << Get Where Expr);
show(gb << Get Where Expr);
private_tables = Find All(Data Tables, Private);
Show(private_tables << get name);
Show(private_tables << Is Linked Subset);
gbs << Get Data Table = {DataTable("sex=F"), DataTable("sex=M")};
gb << Get Data Table = DataTable("Big Class, where -sex == -F- 3");
gbs << Get Where Expr = {:sex == "F", :sex == "M"};
gb << Get Where Expr = :sex == "F";
private_tables << get name = {"sex=F", "sex=M", "Big Class, where -sex == -F-", "Big Class, where -sex == -F- 2", "Big Class, where -sex == -F- 3"};
private_tables << Is Linked Subset = {1, 1, 1, 1, 1};