Comment changer les noms des légendes dans JSL (dans Graph Builder) ?Je reçois beaucoup de données dans un fichier CSV (de nombreuses colonnes, de nombreuses lignes) et je travaille sur un modèle de base en JSL pour standardiser la génération de graphiques. (Remise à l'échelle des axes, renommer les axes, uniformiser la couleur des lignes etc...) En moyenne, je peux obtenir un fichier CSV par jour. Je souhaite donc placer les données dans une table de données JMP, exécuter le script et automatiser la sortie du graphique.
Mon fichier JMP a par défaut les noms de balises comme en-têtes de colonne qui ne sont pas du tout informatifs en tant que légende de graphique. Une solution pourrait être de renommer toutes les colonnes, mais je préférerais conserver les noms des balises et donc manipuler directement le texte dans les paramètres de légende. (Mais fait avec JSL, pas manuellement.)
Je peux facilement accéder à la boîte de légende, par exemple :
gbR = gb << Report; // gbR << Show Tree Structure;
s = gbR[legendbox(1)];
s << Set Title("new title");Dans le PNG ci-joint, vous voyez l'idée.
Là où je suis maintenant bloqué, c'est comment accéder au texte dans la zone de légende (à l'exception du titre) afin que je puisse le manipuler et le modifier à l'aide de JSL.
Je vois que le script généré par graph builder parle de "Legend model" et "Level name" mais je n'ai pas réussi dans les nombreuses choses que j'ai essayées.
Toute orientation à ce sujet serait très appréciée.
Comme dit, en utilisant JSL, comment accéder au texte de la légende pour le changer par défaut ?
Merci.
Personnalisation de masseRe : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Puisse cela scénario de force brute depuis @txnelson pourrait vous aider à faire la même chose pour le texte de l'élément de niveau. Le script de ce fil parle de ne pas afficher certains éléments légitimes, mais vous pouvez utiliser une stratégie similaire dans l'expression pour les éléments de niveau.
Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Je pense que vous devez le faire exactement de cette façon (en utilisant des expressions) si vous voulez le faire avec des scripts. Vous voudrez peut-être enregistrer le script du graphique, analyser l'entrée du nom de niveau entre les crochets et extraire ainsi que les remplacer. Puis repeupler/réexécuter le script modifié. De cette façon, vous pourrez avoir un script très général qui réagit sur ce qu'il y a à changer plutôt que de le définir manuellement pour chaque scénario à chaque fois. Cependant, c'est plus de travail à faire.
Il semble que les propriétés de légende disponibles n'aient pas le texte comme propriété :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) )
);
r = Report( gb )[LegendBox( 1 )];
r << get properties();
/*
["Background Color" => 2147483647,
"Border" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Enabled" => 1,
"Horizontal Alignment" => "Default",
"Margin" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Padding" => {Left( 0 ),
Top( 0 ), Right( 0 ), Bottom( 0 )}, "Text Color" => 2147483647,
"Vertical Alignment" => "Default",
"Visibility" => "Visible"]
*/
Et si vous utilisez
r << legend settings
vous obtiendrez une fenêtre qui bloque toute action dans JMP jusqu'à ce que vous appuyiez sur le bouton ok/annuler. Par conséquent, vous ne pouvez pas accéder à la partie intérieure de cette fenêtre. Une autre chose qui me fait douter que cela soit possible est que l'arborescence de la légende affiche toujours "Mean (...)", peu importe si l'on a changé cela manuellement ou non. Il semble donc qu'il y ait quelque chose de caché positionné au-dessus de l'étiquette initiale. Ou toute autre raison...
Veuillez ajouter un liste de souhaits commentez donc la modification du texte de la légende est modifiable avec JSL. en outre, vous pouvez également l'envoyer au support technique ( support@jmp.com ). N'oubliez pas d'expliquer pourquoi, car cela augmente les chances d'obtenir une priorité plus élevée. Merci
Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Je suis désolé. Il s'agit d'une nouvelle fonctionnalité de JMP 16. Je ne savais pas qu'il venait d'être ajouté et n'était pas disponible dans JMP 15. Vous devrez essayer la première méthode jusqu'à ce que JMP 16 soit disponible. Encore une fois, je m'excuse pour la désinformation.
Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Cher Paul,
Dans le PNG ci-joint, vous voyez la sortie du générateur de graphiques que j'obtiens en exécutant la syntaxe avec et sans
lgnd = gb << Get Legend Display;
item1 = lgnd << Get Item( 4, 1 );
item1 << Set Label("Line 1");
item2 = lgnd << Get Item( 4, 2 );
item2 << Set Label("Line 2");Je ne vois pas de différence dans le texte de la légende, je suis la logique de votre syntaxe mais je n'en vois aucun effet.
Dans le deuxième PNG, vous voyez ce que je pensais voir après l'exécution de votre syntaxe complète.
Si vous pouvez toujours examiner cela et me faire savoir un moyen, je vous en serais très reconnaissant. Merci Scott.
Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?C'est une autre possibilité :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) )
);
lgnd = gb << Get Legend Display;
item1 = lgnd << Get Item( 4, 1 );
item1 << Set Label("Line 1");
item2 = lgnd << Get Item( 4, 2 );
item2 << Set Label("Line 2");
Le premier nombre dans Get Item est la valeur du paramètre Legend dans Graph Builder. Le deuxième numéro va être l'index dans cette légende. Il peut parfois être difficile d'obtenir ces bons chiffres car nous n'affichons pas toujours toutes les légendes. Si vous souhaitez voir la liste complète des légendes, accédez aux paramètres de légende.
Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Merci. Oui, certainement possible. Je suppose que j'aurais besoin d'une variable pour capturer le nom souhaité pour le texte de la légende puisque j'ai différents graphiques en tête ?
Par exemple, selon l'exemple de syntaxe de Graph Builder :
_Legend1 = "abcd";
_Legend2 = "efgh";
Si oui, devrais-je utiliser ce qui suit pour gérer l'utilisation d'une variable ?
Eval(
Substitute(
Expr(
Enfin, cette option est-elle probablement le seul moyen d'obtenir une manipulation plus "directe" du texte de la légende ?
Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Serait-il possible de faire quelque chose comme ça dans vos scripts de création de graphes :
Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
4,
Level Name( 0, "abcd", Item ID( "Mean(height)", 1 ) ),
Level Name( 1, "efgh", Item ID( "Mean(weight)", 1 ) )
)}
),
Dispatch( {}, "400", LegendBox, {Set Title( "My Title" )} )
)
);Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Merci d'avoir confirmé que je n'ai rien raté d'évident.
Malheureusement, je ne vois pas (ou je ne suis pas capable de voir) comment les "étiquettes de valeur" peuvent faire ce que je cherche à réaliser. Mon objectif, dans une certaine mesure ou autre, est de modifier efficacement le nom de la colonne, et non de manipuler les valeurs de données qui se trouvent dans les lignes sous le titre de la colonne.
Si je fais un tableau simple avec quelques valeurs dans le texte de la légende change si j'utilise "Set Name" pour une colonne donnée, par exemple "Column(dt, 1) << Set Name("New name");" Cette ligne de syntaxe entraîne la mise à jour du texte des données de la colonne 1 et devient « Nouveau nom ».
Le graphique de mes données réelles a des textes de légende du type "Mean(…Tag Name…)". Si vous utilisez <
Toute idée sur la façon de manipuler le texte de la légende pour une colonne donnée serait bonne à savoir. Peut-être que je viens de créer une légende à partir de zéro afin que toutes les propriétés d'une telle légende "auto-créée" soient accessibles et manipulables. J'aimerais que ce soit quelque chose de scripté et non quelque chose qui nécessite une attention manuelle chaque fois que je crée un nouveau graphique (probablement quotidiennement).
Re : Comment changer les noms de légende dans JSL (dans Graph Builder) ?Les détails de l'index de script pour une boîte de légende() n'affichent aucun message permettant de modifier les étiquettes réelles dans une légende. Cependant, étant donné que les valeurs de la légende proviennent directement des valeurs de la table de données, vous pouvez simplement modifier/recoder les valeurs de la table de données ou définir la propriété de colonne "Value Labels".