Comment changer les noms de légende dans JSL (dans Graph Builder)?Je reçois beaucoup de données dans un fichier CSV (beaucoup de colonnes, de nombreuses lignes) et je travaille sur un modèle de base en JSL pour standardiser la génération de graphiques. (Redimensionner les axes, renommer les axes, standardiser la couleur des lignes etc ...) En moyenne, je peux obtenir un fichier CSV par jour donc je veux mettre les données dans une table de données JMP, exécuter le script et avoir le sortie graphique entièrement automatisée.
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 de 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 en utilisant JSL.
Je vois que le script généré par le générateur de graphes parle de "modèle de légende" et de "nom de niveau" 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.
ScriptingRe: Comment changer les noms de légende dans JSL (dans Graph Builder)?Les détails de l'index de script pour une zone de légende () ne montrent aucun message permettant de modifier les étiquettes réelles dans une légende. Cependant, comme 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 "Étiquettes de valeur".Re: Comment changer les noms de légende dans JSL (dans Graph Builder)?Merci d'avoir confirmé que je n'ai pas manqué quelque chose d'évident.
Malheureusement, je ne vois pas (ou je ne suis pas en mesure 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 crée un tableau simple avec quelques valeurs dans le texte de la légende change si j'utilise "Définir le nom" pour une colonne donnée, par exemple "Colonne (dt, 1) << Définir le nom (" Nouveau nom ");" 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 «Moyenne (… Nom du tag…)». Si vous utilisez << Définir le nom avec mes données réelles, j'ai toujours un texte de légende problématique car il inclut «Moyenne (… nom de colonne…)».
Toute idée sur la façon de manipuler le texte de la légende pour une colonne donnée serait formidable à savoir. Peut-être que je fais juste une légende à partir de zéro pour que toutes les propriétés d'une telle légende "faite maison" soient accessibles et manipulables. Je voudrais 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)?Serait-il possible de faire quelque chose comme ça dans vos scripts de création de graphiques:
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. Oui, certainement possible. J'imagine 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 tel est le cas, aurais-je besoin d'utiliser les éléments ci-dessous pour gérer l'utilisation d'une variable?
Eval(
Substitute(
Expr(
Enfin, est-ce que cette option est probablement la seule façon de réaliser une manipulation plus "directe" du texte de la légende?
Re: Comment changer les noms de légende dans JSL (dans Graph Builder)?Voici 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 sera l'index de cette légende. Parfois, il peut être difficile d'obtenir ces chiffres, car nous ne montrons 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)?Cher Paul,
Dans le PNG ci-joint, vous voyez la sortie du générateur de graphiques que j'exécute 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 une façon, je vous serais très reconnaissant. Merci, Scott.
Re: Comment changer les noms de légende dans JSL (dans Graph Builder)?Je suis désolé. C'est 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.