Comment obtenir des informations sur la boîte de légende, 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 graphes pour générer un graphique assez complexe contenant plusieurs bits 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, ci-dessous est quelque chose comme ce à quoi le graphique pourrait ressembler (en utilisant Big Class Families.jmp).

Ce que j'aimerais faire, c'est prendre ses tracés originaux de générateur de graphiques et 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 en tant que bouton de raccourci dans sa barre d'outils qui fixera les marqueurs et les couleurs des données. La raison pour laquelle cela est nécessaire est qu'à partir de Graph Builder, chaque fois que l'utilisateur utilise le filtre de données pour changer de région, le codage couleur et les marqueurs changent pour l'ensemble de clients car le nombre de clients change dans chaque région. Ils aimeraient avoir ceci 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 la structure arborescente, 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, c'est bien, 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 boîte de légende, 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 l'utilisateur demande, 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 la sortie 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 boîte de légende, comme la couleur et le type de marqueurPeut-être que cette partie ici pourrait vous aider. Au moins, il vous fournit des informations sur le point de données réel du graphique qui 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 le faire...
Le message "get marker" peut être remplacé par "get markers" pour vous donner une liste des marqueurs utilisés dans ce segment de marqueur. Mais comme ils sont tous pareils dans cet état, j'ai coupé court 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 boîte de légende, comme la couleur et le type de marqueurSalut @MJE ,
Merci pour les commentaires. Malheureusement, ce n'est pas tout à fait 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 apportée, les couleurs et les marqueurs changent en fonction des 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 veux le faire automatiquement pour plus de facilité pour l'utilisateur.
Je pense que c'est quelque chose de plus proche de MarkerSeg et <<
Je suis en train de lire dessus 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, quand je l'exécute, j'obtiens la sortie suivante 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 boîte de légende, comme la couleur et le type de marqueurSalut @SDF1 ,
si j'ai bien compris votre problème, vous voudrez peut-être vérifier les états de ligne.
<< copy from row states
et
<< copy to row states
vous permet de transférer les informations d'état de ligne (telles que la couleur, le marqueur, etc.) dans une colonne séparée et de nouveau dans les états de ligne (des exemples et la syntaxe peuvent être trouvés dans l'index de script).
Br
Malte