Enregistrement du Scripters Club : JSL dans Graph BuilderVidéo 1
Présentateur @Emmanuel_Romeu
Vidéo 2
Présentateur : @jthi
Ré: Enregistrement du Scripters Club : JSL dans Graph BuilderScript que j'ai utilisé
Ré: Enregistrement du Scripters Club : JSL dans Graph BuilderQuelques questions du chat Teams
Question 1 :
existe-t-il une commande Xpath qui correspond à
Dispatch( {}, "X title", TextEditBox,
Réponse 1 :
Le moyen le plus simple de vérifier est d'utiliser << Get XML et de vérifier si vous pouvez trouver « X title » à partir de là. Vous ne pouvez pas (ces « éléments d'affichage » pourraient être identiques à l'attribut helpKey mais ils n'ont tout simplement pas été ajoutés à tout).


Mais vous pouvez créer un XPath compliqué pour obtenir les zones d'édition de texte de l'axe (je pense que le premier est toujours l'axe X).
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>
Vous pouvez baser votre XPath sur la recherche de GraphBuilderComponentBox + GraphBuilderAxisBox et de GraphBuilderComponentBox + GraphBuilderTitleBox précédents
//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();
Question 2 :
Cette question est davantage liée à Graph Builder, et non directement aux scripts. Pourriez-vous s'il vous plaît montrer comment mettre en évidence ou identifier un échantillon dans le graphique ? Et comment ajouter une étiquette à un seul des échantillons, et en plus à certains échantillons spécifiques.
Réponse 2 :
Différents types de données (et versions JMP) peuvent nécessiter différents types de techniques d'étiquetage. Dans le pire des cas, vous devrez peut-être créer un script, mais ce n'est généralement pas nécessaire.
Je vais partir de l'hypothèse de JMP18 et de données simples. J'ai un graphique comme celui-ci et je souhaite étiqueter et colorer le point en surbrillance

Il suffit d'étiqueter cette ligne et d'ajouter un état de ligne de couleur pour qu'elle soit mise en évidence comme ceci

Ce module complémentaire a également été mentionné Column Quick Swapper - modifiez facilement plusieurs colonnes des axes Y et X dans Graph Builder
Ré: Enregistrement du Scripters Club : JSL dans Graph BuilderMerci pour les réponses.
Je me demande pourquoi il n'y a rien de tel que :
current report() << XPath("//TextEditBox[@type='X title']")
cas d'application réel :
obtenir le titre de l'axe Y inférieur dans un graphique avec 2 étiquettes d'axe x et 2 étiquettes d'axe y
Dispatch( {}, "Y 1 title", TextEditBox,est merveilleux comparé au fait de deviner la bonne entrée dans cette liste :
axis_title_tebs = Report(gb) << XPath("//GraphBuilderComponentBox[GraphBuilderAxisBox]/preceding-sibling::GraphBuilderComponentBox[1]/GraphBuilderTitleBox/TextEditBox");
Ré: Enregistrement du Scripters Club : JSL dans Graph BuilderVous pouvez toujours le rendre assez robuste
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();
Dommage que ce soit « Y 1 title » et non « Y title » (ou peut-être que cela devrait toujours être « Y 1 title » et nous ne devrions même pas avoir simplement « Y title »), donc ce sera différent si vous avez un ou plusieurs axes Y.
Ré: Enregistrement du Scripters Club : JSL dans Graph BuilderHum...
c'est toujours amusant d'obtenir ce défi d'analyse bonus « gratuitement »
- en plus de l'analyse pour laquelle vous êtes "payé";)
Ré: Enregistrement du Scripters Club : JSL dans Graph BuilderQuelques liens du Guide de script (pas nécessairement directement liés à JSL pour le générateur de graphiques)
Ré: Enregistrement du Scripters Club : JSL dans Graph BuilderDepuis JMP18, les variables By fonctionnent un peu différemment et il existe de nouvelles options. Si vous avez l'impression d'utiliser beaucoup les variables By, je vous suggère de consulter Group Platform à partir de l'index des scripts. Il contient par exemple « Group Platform » qui peut être utile de temps en temps car vous pouvez contrôler la référence que vous obtenez (niveau le plus élevé ou toutes les plateformes d'une liste)

Il y a des considérations quelque peu similaires avec Where Filter by Value Using a Where Statement (jmp.com) . L'une de ces considérations pourrait être la table de données qu'ils utilisent ou l'expression where
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};