Définition des axes et des titres du graphique en tant que variablesBonjour à tous, novice ici :
Je travaille avec un ensemble de données dans un processus que je m'attends à répéter plusieurs fois, en tant que tel, j'essaie d'automatiser la configuration du mieux que je peux. Pour le moment je travaille sur une présentation de données, et j'ai besoin de votre aide pour rendre les titres des axes d'un graphique variables en fonction du contenu des cellules.
à titre d'exemple, j'ai les données ci-dessous:

à partir de ces données, je veux tracer un graphique montrant "Res" pour chaque valeur "Col A", ainsi qu'une série de lignes de référence montrant "Ref" (et ses conditions aux limites "+/-uref" et "rob" et son conditions aux limites "+/- urob".
Actuellement le script est le suivant :
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]} )} )
)
);
Ce qui fonctionne bien et est suffisamment flexible pour pouvoir modifier les lignes de référence dans le graphique en fonction des valeurs de cellule selon les besoins.
Maintenant, ce que j'aimerais, c'est aussi que les titres puissent faire la même chose que les lignes de référence. Donc idéalement je pourrais ajouter une colonne initiale dans ma table jmp, que nous appellerons "info" qui contient les informations sur l'analyte étudié (nom, unités utilisées pour la mesure, etc...) et j'aimerais pour le titre du graphique (et axes) pour extraire les informations de ces cellules (comme le font actuellement les lignes de référence) et utiliser ces informations dans le texte.
Par exemple, si dans ma colonne "info" j'ai "Zr4 +", j'aimerais que le graphique final aille chercher cette cellule et l'utilise pour s'étiqueter ou l'un de ses axes. De sorte que je peux ensuite changer la cellule en "Br7-" et la prochaine fois que j'exécuterai le script, le nouveau graphique sera étiqueté avec "Br7-".
Est-il possible de faire cela?
points bonus si la variable peut être insérée dans un texte plus long, par exemple l'axe y est "Zr 4+ (mg/l)" puis passe à "Br7- (mg/l)"
Personnalisation de masseles fenêtresRe : Définition des axes et des titres du graphique en tant que variablesMerci pour ça,
Je vais faire ce que vous dites et lire le guide. En effet, mon travail avec JSL est la première fois que je fais du scripting/coding dans ma vie donc il y a beaucoup de logiques spécifiques que j'ai encore besoin d'apprendre !
Re : Définition des axes et des titres du graphique en tant que variablesLe problème que vous semblez avoir est de savoir comment fournir à TextEditBox() l'élément correctement syntaxé.
La spécification pour Set Text, telle qu'elle se trouve dans l'index de script est :

Donc, fondamentalement, ce qui doit être fourni est une "chaîne".En JSL, à peu près n'importe quoi peut être mis dans une chaîne.À partir de l'exemple dans l'exemple de script
gbr[TextEditBox(1)] << set text(column(dt,"info")[1]);
La valeur de la première ligne de la colonne "info" est envoyée à TextEditBox(), et puisque la colonne "Indo" a un type de modélisation de caractère, les valeurs de chaque cellule sont une "chaîne".
JSL permet la construction de chaînes de différentes manières.Je vous suggère fortement de prendre le temps de lire le Guide de création de scripts qui se trouve dans la bibliothèque de documentation JMP, disponible dans le menu déroulant Aide.
Mais pour une illustration simple, si vous voulez avoir "Graph 5 Analysis Res, cela pourrait simplement être indiqué comme
gbr[TextEditBox(1)] << set text( "Graph 5 " || column(dt,"info")[1]);
Où la chaîne passée à TextEdibox() est une chaîne créée à partir de la concaténation de la chaîne "Graph 5" avec la chaîne de la cellule de la première ligne de la colonne Info.
Re : Définition des axes et des titres du graphique en tant que variablesBonjour Jim,
J'ai un peu plus joué avec le script et les titres des axes.
La solution que vous avez fournie fonctionne très bien pour les éléments de base, je me demandais s'il existait un moyen d'introduire un élément variable et un élément fixe dans la partie "définir le texte".
Finalement, à partir du script sur lequel vous m'avez aidé à travailler, je tire trois ou quatre graphiques différents, maintenant j'aimerais que le titre de chaque graphique extraie le texte d'une cellule et l'intègre dans un autre texte (d'une autre cellule, ou écrit directement dans un script, je ne suis pas difficile.
Pour m'expliquer, actuellement le titre de mon graphique se terminera par "analyte res" (qui a déjà des lieues d'avance sur ce que j'étais auparavant), j'aimerais aller un peu plus loin et avoir quelque chose comme "graph 5 : [Analyte res]" de sorte que je peux simplement changer la partie "analyte res" et cela changera le titre. de la même manière, il serait bien de pouvoir avoir l'axe y étiqueté comme "[analyte] [quantité mesurée (masse, concentration, volume, ...)] [unité (g, mg/L, cm3... )]" de sorte que je puisse ensuite modifier chacune des trois variables dans les cellules choisies en fonction de mes besoins pour chaque graphique différent.
J'ai joué avec le paramètre "set text" mais il ne semble pas aimer un système mixte comme celui-là (ou même tirer de plusieurs cellules). donc ma solution de contournement la plus prometteuse consiste simplement à ajouter une zone de texte à côté du titre et de l'axe y, bien que ce ne soit bien sûr pas une solutuon élégante et je soupçonne que dans certains cas, je dois faire attention à ne pas induire de chevauchement entre les deux zones de texte. ...
Des idées?
Re : Définition des axes et des titres du graphique en tant que variables)Cher Jim, merci pour ça, ça fait l'affaire !
Re : Définition des axes et des titres du graphique en tant que variablesJ'ai ajouté une nouvelle colonne d'informations à votre tableau de données

Et modifié votre script pour l'utiliser pour obtenir les valeurs des étiquettes.J'ai également modifié votre script pour utiliser un moyen plus direct d'ajouter les lignes de référence au graphique.

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]);