Comment obtenir des informations sur la Legend Box, comme la couleur et le type de marqueurChère communauté JMP,
(W10 Entreprise 64 bits, JMP Pro 15.0)
J'ai un utilisateur qui utilise le générateur de graphiques pour générer un graphique plutôt complexe contenant plusieurs éléments d'information. Les données du marché sont divisées par région, client, etc. En conséquence, le nuage de points est codé par couleur et comporte plusieurs marqueurs. À titre d'exemple, vous trouverez ci-dessous quelque chose qui ressemble à quoi le graphique pourrait ressembler (en utilisant Big Class Families.jmp).

Ce que j'aimerais faire, c'est prendre ses tracés de création de graphiques d'origine, extraire de la légende le style et la couleur du marqueur et les définir comme propriétés dt. Le but est que l'utilisateur puisse exécuter un peu de code JSL sous forme de bouton actif dans sa barre d'outils qui corrigera les marqueurs et les couleurs des données. La raison pour laquelle cela est nécessaire est que, depuis Graph Builder, chaque fois que l'utilisateur utilise le filtre de données pour changer de région, le code couleur et les marqueurs changent pour l'ensemble de clients car le nombre de clients change dans chaque région. Ils aimeraient avoir cela comme propriété fixe de la colonne de données par exemple.
J'essayais un peu de code JSL comme celui-ci pour tenter d'obtenir les informations de LegendBox(1) dans l'arborescence, mais j'obtiens null comme résultat de la ligne : test = legend<
Names Default to here(1);
dt = Open("$Sample_Data/Big Class Families.jmp");
gb=dt<<GRAPH builder=""></GRAPH><BR />test = legend<<GET property=""></GET>Si les informations de couleur sont en RVB ou autre, ce n'est pas grave, il n'est pas nécessaire que ce soit un nom comme "bleu" ou "rouge".
Toutes les suggestions sur la façon de procéder sont très appréciées.
Merci,
DS
Re : Comment obtenir des informations sur la Legend Box, comme la couleur et le type de marqueurSalut @MJE ,
Merci pour les commentaires supplémentaires. Ça marche! Merci pour la solution, je la marque comme telle. Je l'ai légèrement modifié pour qu'il ressemble davantage à ce que demande l'utilisateur, mais sinon, il fait le travail. D'après ce que je peux dire, la liste des marqueurs et des couleurs est dans le même ordre que la légende.
Voici la version modifiée de votre code que j'ai utilisé :
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :age ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
segs = Report(gb)[Framebox(1)]<<FIND segs=""></FIND>
Et le résultat que j'obtiens :
MarkerList = {"Cercle", "Plus", "Diamant", "X", "Triangle", "Y"} ;
Liste de couleurs = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} } ;

Merci!,
DS
Re : Comment obtenir des informations sur la Legend Box, comme la couleur et le type de marqueurPeut-être que cette partie ici pourrait vous aider. Au moins, il vous fournit des informations sur quel point de données réel dans le graphique a quelle couleur et quel marqueur. Malheureusement, je n'ai pas trouvé de moyen de corréler directement les points de données (resp. le segment de marqueur) aux numéros de ligne réels. Peut-être que quelqu'un d'autre a une idée sur la façon de procéder...
Le message « get Marker » peut être remplacé par « Get Markers » pour vous donner une liste des marqueurs utilisés dans ce segment de marqueurs. Mais comme ils sont tous pareils dans cet état, je l'ai raccourci pour une meilleure lisibilité.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
//gb << show tree structure;//only for debugging and building the script
segs = Report( gb )[Framebox( 1 )] << Find Segs;
For ( i = 1, i <= n items (segs), i++,
seg = Report( gb )[Framebox( 1 )] << Find Seg( MarkerSeg(i) );
nx = seg << get x values;
ny = seg << get y values;
m = seg << get marker;
c = seg << get colors;
show (nx, ny, m, c);
);
J'espère que cela t'aides.
br
Malte
Re : Comment obtenir des informations sur la Legend Box, comme la couleur et le type de marqueurSalut @MJE ,
Merci pour les commentaires. Malheureusement, ce n’est pas vraiment ce qui m’intéresse. L'utilisateur n'a pas réellement modifié l'état de la ligne ou le marqueur, il laisse Graph Builder le faire automatiquement. Mais chaque fois qu'une modification est effectuée, les couleurs et les marqueurs changent selon les valeurs par défaut de JMP. Je souhaite extraire les "paramètres" de marqueur et de couleur que Graph Builder effectue automatiquement, puis les appliquer au dt afin qu'il soit corrigé et ne soit pas mis à jour lorsqu'une modification est apportée à Graph Builder. Je souhaite le faire automatiquement pour faciliter la tâche de l'utilisateur.
Je pense que c'est quelque chose de plus proche de MarkerSeg et <<
Je suis en train de le lire maintenant et j'essaie de modifier les exemples dans l'index de script, en utilisant le code modifié ci-dessous.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height, Row States(dt))
);
gb << show tree structure;//only for debugging and building the script
lgnd = (gb << Report)[FrameBox(1)];
markerseg = (lgnd<<FIND seg=""></FIND>
Mais lorsque je l'exécute, j'obtiens le résultat suivant pour Markerseg : {"Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot"}
D'après le graphique que j'ai inclus dans le message d'origine, chaque point de données n'est PAS un « point ».
Merci!,
DS
Re : Comment obtenir des informations sur la Legend Box, comme la couleur et le type de marqueurSalut @SDF1 ,
si j'ai bien compris votre problème, vous souhaiterez peut-être vérifier les états des lignes.
<< copy from row states
et
<< copy to row states
vous permet de transférer des informations sur l'état des lignes (telles que la couleur, le marqueur, etc.) dans une colonne séparée et de nouveau dans les états des lignes (des exemples et la syntaxe peuvent être trouvés dans l'index des scripts).
br
Malte