Masquage des éléments de légende dans Graph Builder à l'aide de JSLJ'ai un problème ennuyeux avec Graph Builder en JSL.Afin d'afficher à la fois les points et de manière plus fluide sur un nuage de points, je modifie la transparence des points.Je peux faire en sorte que cela fonctionne assez bien, mais lorsque je manipule le tracé plus tard dans JSL, les points sont rajoutés à la légende par défaut au lieu de rester cachés, je suppose parce que JMP pense qu'ils ne sont plus redondants.Je sais que manuellement dans le générateur de graphiques, vous pouvez décocher les éléments que vous ne souhaitez pas afficher, mais existe-t-il un moyen de le faire en JSL ?


Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLEt merci @anne_sa .Vos informations m'ont orienté dans la bonne direction.
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLMerci @txnelson et @jjswan33 pour vos réponses !
Je dois l'adapter légèrement pour qu'il corresponde à mon script mais je pense que je vais travailler.
Merci encore 
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLJ'ai trouvé une solution alternative qui, à mon avis, est plus propre que la méthode de force brute de Jim.
Au lieu de cela, je définis deux listes au début de ma fonction :
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);pour créer les deux listes nécessaires pour les éléments de légende des points et des lignes (dans mon cas), puis en passant ces listes sous forme de matrices qui sont envoyées au générateur de graphiques comme suit :
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)Version complète de la fonction mise à jour :
RadPlotCreator1XGroupTest = Function({dt, XCol, YCol, OverlayCol, GroupXCol}, {Default Local},
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)
)
);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLVoici la méthode par force brute que j'utilise pour résoudre ce genre de problèmes.Je construis simplement le code JSL requis, puis j'exécute le JSL que j'ai créé. Veuillez noter que dans le tableau de données Big Class que j'ai utilisé, j'ai ajouté un groupe d'âge supplémentaire, de 18 ans.
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of Age groups
Summarize( dt, ageGroups = by( :age ) );
// Build the JSL
theExpr =
"Graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
\!"400\!",
LegendBox,
{Legend Position(
{6, [ -1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
theExpr = theExpr || "], 7, [0";
For( i = 1, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]}
), Position( {-1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
For( i = 0, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]} ) } )));";
// Execute the JSL string
eval(parse(theExpr));

Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLOups mauvais copier/coller désolé pour la confusion !
Refaisons-le (en utilisant JMP15) !
J'ai d'abord le graphique suivant :

Et le script correspondant est :
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) )
)
Manuellement je modifie la légende et désélectionne les éléments associés aux points :

J'obtiens ce graphique :

Et le script mis à jour est :
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{6, [-1, -1, -1, -1, -1, -1], 7, [0, 1, 2, 3, 4, 5, 6, -3]}
), Position( {-1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, -3} )}
)
)
)Existe-t-il un moyen simple de gérer cette deuxième étape avec JSL ?
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLPersonnellement, je reçois les doubles légendes dans JMP 12 et JMP 14.Je n'ai pas publié mon code plus tôt, mais vous trouverez ci-dessous la fonction que j'utilise pour créer les tracés où j'ai le problème.Dans mon cas, je pense que ce qui se passe, c'est que dès que j'utilise le morceau de code pour définir la transparence des points, JMP ne pense plus que l'élément de légende des points est redondant et affiche le résultat.
RadPlotCreator1X1YGroup = Function({dt, XCol, YCol, OverlayCol, GroupXCol, GroupYCol}, {Default Local},
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Group Y( GroupYCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
)
)
);
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLQuelle version de JMP utilisez-vous et sur quel système d'exploitation.En utilisant le JSL que vous avez fourni, je ne peux pas obtenir les résultats que vous spécifiez.Pour JMP 15, j'obtiens

Dans JMP 13 et JMP 14 j'obtiens :

Dans JMP 11 et JMP 12, j'obtiens :

Mais je n'arrive pas à récupérer le graphique que vous présentez avec les différents repères, ainsi que les points et le marquage rectangulaire dans la légende.
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLSalut @txnelson ,
Merci pour votre réponse.
Cependant je ne souhaite pas masquer ou supprimer complètement la légende mais juste une partie de celle-ci.
Par défaut j'ai le graphique suivant :

Et je voudrais masquer uniquement les éléments ponctuels dans la légende pour obtenir celui-là :

Apparemment, "-1" dans l'option de position de la légende signifie "masquer cet élément" mais je ne vois pas comment utiliser facilement cette option sans informations préalables sur le graphique.
J'espère que c'est plus clair.
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLVous pouvez utiliser l'élément Afficher la légende pour contrôler l'affichage ou le masquage de la légende.Voici l'entrée de l'index des scripts le montrant
Aide==>Index des scripts

Vous pouvez également supprimer l'intégralité du composant Légende en le supprimant à l'aide des fonctionnalités d'affichage de l'arborescence de JMP.
gb = Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y))
);
report(gb)[LegendBox(1)]<<DELETE></DELETE>
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLSalut tout le monde,
Je suis actuellement confronté au même problème : cacher une partie de la légende de Graph Builder à l'aide de JSL.
Je pense que les options "Légende" ou "Position Légende" pourraient aider mais j'ai du mal à bien comprendre comment cela fonctionne, notamment si on ne connaît pas le nombre de groupes.
Par exemple, je souhaite créer ce type de graphique en utilisant la table Big Class, et je ne souhaite pas afficher les éléments ponctuels dans la légende :

Le script correspondant est :
Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y, Legend( 4 ) ), Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{4, [0, 1, 2, 3, 4, 5, 6, -3], 5, [-1, -1, -1, -1, -1, -1]}
), Position( {0, 1, 2, 3, 4, 5, 6, -3, -1, -1, -1, -1, -1, -1} )}
)
)
)Existe-t-il un moyen de généraliser le processus sans connaître le nombre de niveaux pour la variable âge ?
Toute contribution serait appréciée
Merci
Re : Masquer les éléments de légende dans Graph Builder à l'aide de JSLJe suppose qu'il n'y a pas de solution JSL pour cela.Si tel est le cas, il devrait en être ainsi.