Ocultar elementos de leyenda en Graph Builder usando JSLTengo un problema molesto con Graph Builder en JSL.Para mostrar tanto los puntos como un diagrama de dispersión más suave, estoy cambiando la transparencia de los puntos.Puedo hacer que esto funcione bastante bien, pero cuando manipulo la trama más adelante en JSL, los puntos se vuelven a agregar a la leyenda de forma predeterminada en lugar de permanecer ocultos, supongo porque JMP cree que ya no son redundantes.Sé que manualmente en el generador de gráficos puedes desmarcar los elementos que no deseas mostrar, pero ¿hay alguna manera de hacerlo en JSL?


Re: Ocultar elementos de leyenda en Graph Builder usando JSLY gracias @anne_sa .Tu información me indicó la dirección correcta.
Re: Ocultar elementos de leyenda en Graph Builder usando JSLGracias @txnelson y @jjswan33 por tus respuestas!
Necesito adaptarlo ligeramente para que coincida con mi guión, pero creo que funcionará.
Gracias de nuevo 
Re: Ocultar elementos de leyenda en Graph Builder usando JSLEncontré una solución alternativa que, en mi opinión, es más limpia que el método de fuerza bruta de Jim.
En lugar de eso, estoy definiendo dos listas al comienzo de mi función:
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);para crear las dos listas necesarias para los elementos de leyenda de puntos y líneas (en mi caso), y luego pasar esas listas como matrices que se envían al generador de gráficos de la siguiente manera:
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)Versión completa de la función actualizada:
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: Ocultar elementos de leyenda en Graph Builder usando JSLEsta es la forma de fuerza bruta que utilizo para resolver este tipo de problemas.Simplemente construyo el código JSL requerido y luego ejecuto el JSL que creé. Tenga en cuenta que en la tabla de datos de Big Class que utilicé, agregué un grupo de edad adicional, de 18 años.
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: Ocultar elementos de leyenda en Graph Builder usando JSL¡Vaya, copiar/pegar mal, perdón por la confusión!
¡Rehagámoslo (usando JMP15)!
Primero tengo el siguiente gráfico:

Y el guión correspondiente es:
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) )
)
Manualmente modifico la leyenda y deselecciono los elementos asociados a los puntos:

Me sale este gráfico:

Y el script actualizado es:
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 una manera sencilla de gestionar este segundo paso con JSL?
Re: Ocultar elementos de leyenda en Graph Builder usando JSLPersonalmente obtengo las leyendas duales tanto en JMP 12 como en JMP 14.No publiqué mi código antes, pero a continuación se muestra la función que uso para crear los gráficos donde tengo el problema.En mi caso, creo que lo que está sucediendo es que tan pronto como uso el fragmento de código para establecer la transparencia de los puntos, JMP ya no piensa que el elemento de la leyenda de puntos es redundante y muestra el resultado.
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: Ocultar elementos de leyenda en Graph Builder usando JSL¿Qué versión de JMP estás utilizando y en qué sistema operativo?Al utilizar el JSL que proporcionó, no puedo obtener los resultados que usted especifica.Por JMP 15 me sale

En JMP 13 y JMP 14 obtengo:

En JMP 11 y JMP 12, obtengo:

Pero no consigo obtener la gráfica que presentas con los diferentes marcadores, y tanto los puntos como la marca rectangular en la leyenda.
Re: Ocultar elementos de leyenda en Graph Builder usando JSLHola @txnelson ,
Gracias por su respuesta.
Sin embargo, no quiero ocultar ni eliminar completamente la leyenda, sino sólo una parte de ella.
Por defecto tengo el siguiente gráfico:

Y me gustaría ocultar sólo los elementos de puntos en la leyenda para obtener ese:

Aparentemente "-1" en la opción de posición de la leyenda significa "ocultar este elemento", pero no veo cómo usar esta opción fácilmente sin información previa sobre el gráfico.
Espero que quede más claro.
Re: Ocultar elementos de leyenda en Graph Builder usando JSLPuede utilizar el elemento Mostrar leyenda para controlar la visualización u ocultación de la leyenda.Aquí está la entrada del Índice de secuencias de comandos que lo muestra.
Ayuda==>Índice de secuencias de comandos

También puede eliminar todo el componente Leyenda eliminándolo usando las capacidades de Mostrar árbol en 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: Ocultar elementos de leyenda en Graph Builder usando JSLHola a todos,
Actualmente me enfrento al mismo problema: ocultar una parte de la leyenda de Graph Builder usando JSL.
Creo que las opciones "Leyenda" o "Posición de leyenda" podrían ayudar, pero tengo dificultades para entender completamente cómo funciona, en particular si no sabemos el número de grupos.
Por ejemplo, quiero crear este tipo de gráfico usando la tabla Big Class y no quiero mostrar los elementos de puntos en la leyenda:

El guión correspondiente es:
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 alguna forma de generalizar el proceso sin conocer el número de niveles de la variable edad?
Cualquier aportación será apreciada
Gracias
Re: Ocultar elementos de leyenda en Graph Builder usando JSLSupongo que no existe una solución JSL para esto.Si ese es el caso, debería haber muchas cosas.