¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Obtengo muchos datos en un archivo CSV (muchas columnas, muchas filas) y estoy trabajando en una plantilla básica en JSL para estandarizar la generación de gráficos. (Reescalar los ejes, renombrar los ejes, estandarizar el color de las líneas, etc...) En promedio, puedo obtener un archivo CSV por día, así que quiero poner los datos en una tabla de datos JMP, ejecutar el script y hacer que la salida del gráfico sea totalmente automática.
Mi archivo JMP tiene por defecto los nombres de las etiquetas como encabezados de columna que no son del todo informativos como una leyenda de gráfico. Una forma de evitarlo podría ser cambiar el nombre de todas las columnas, pero preferiría mantener los nombres de las etiquetas y, por lo tanto, manipular directamente el texto en la Configuración de leyenda. (Pero hecho con JSL, no manualmente).
Puedo acceder fácilmente al cuadro de leyenda, por ejemplo:
gbR = gb << Report; // gbR << Show Tree Structure;
s = gbR[legendbox(1)];
s << Set Title("new title");En el PNG adjunto se ve la idea.
Donde ahora estoy atascado es cómo acceder al texto en el cuadro de leyenda (excepto el título) para poder manipularlo y cambiarlo usando JSL.
Veo que el script generado por el generador de gráficos habla de "Modelo de leyenda" y "Nombre de nivel", pero no tengo éxito en las numerosas cosas que he intentado.
Cualquier orientación sobre esto sería muy apreciada.
Como se dijo, usando JSL, ¿cómo acceder al texto de la leyenda para cambiarlo por defecto?
Gracias.
La personalización en masaRe: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Que esto guion de fuerza bruta de @txnelson podría ayudarlo a hacer algo similar para el texto del elemento de nivel. La secuencia de comandos en ese hilo habla de no mostrar ciertos elementos legítimos, pero puede usar una estrategia similar dentro de la expresión para los elementos de nivel.
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Creo que debe hacer esto exactamente de esa manera (usando expresiones) si desea hacerlo con secuencias de comandos. Es posible que desee guardar la secuencia de comandos del gráfico, analizar la entrada del nombre del nivel entre corchetes y extraerla y sustituirla. Luego rellene/vuelva a ejecutar el script modificado. De esta manera, podrá tener un script muy general que reaccione sobre lo que hay que cambiar en lugar de definirlo manualmente para cada escenario cada vez. Sin embargo, es más trabajo por hacer.
Parece que las propiedades de leyenda disponibles no tienen el texto como propiedad:
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 ) ) )
);
r = Report( gb )[LegendBox( 1 )];
r << get properties();
/*
["Background Color" => 2147483647,
"Border" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Enabled" => 1,
"Horizontal Alignment" => "Default",
"Margin" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Padding" => {Left( 0 ),
Top( 0 ), Right( 0 ), Bottom( 0 )}, "Text Color" => 2147483647,
"Vertical Alignment" => "Default",
"Visibility" => "Visible"]
*/
Y si usas
r << legend settings
obtendrá una ventana que bloquea cualquier acción en JMP hasta que presione el botón Aceptar/Cancelar. Por lo tanto, no puede acceder a la parte interior de esa ventana. Otra cosa que aumenta mi duda de que esto sea posible es que la estructura de árbol de la leyenda aún muestra "Media (...)", sin importar si uno ha cambiado eso manualmente o no. Entonces parece que hay algo oculto colocado encima de la etiqueta inicial. O cualquier otra razón...
Por favor agregue un lista de deseos comentario, por lo que cambiar el texto de la leyenda se puede cambiar con JSL. además, es posible que también desee enviarlo al soporte técnico ( support@jmp.com ). No olvide explicar por qué, ya que esto aumenta la posibilidad de obtener una mayor prioridad. Gracias
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Lo lamento. Esa es una nueva característica en JMP 16. No me di cuenta de que acababa de agregarse y no estaba disponible en JMP 15. Deberá probar el primer método hasta que JMP 16 esté disponible. De nuevo, pido disculpas por la desinformación.
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Querido Paul,
En PNG adjunto, verá la salida del generador de gráficos que obtengo al ejecutar la sintaxis con y sin
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");No veo ninguna diferencia en el texto de la leyenda, sigo la lógica de su sintaxis pero no veo ningún efecto.
En el segundo PNG, ve lo que estaba pensando que vería después de la ejecución de su sintaxis completa.
Si aún puede investigar esto y dejarme saber una manera estaría muy agradecido. Gracias, Scott.
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Esta es otra posibilidad:
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");
El primer número en Obtener elemento es el valor del parámetro Leyenda en Graph Builder. El segundo número será el índice de esa leyenda. A veces puede ser complicado acertar con estos números porque no siempre mostramos todas las leyendas. Si desea ver la lista completa de leyendas, vaya a Configuración de leyenda.
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Gracias. Sí, ciertamente posible. Supongo que necesitaría una variable para capturar el nombre deseado para el texto de la leyenda ya que tengo diferentes gráficos en mente.
Por ejemplo, según el ejemplo de sintaxis de Graph Builder:
_Legend1 = "abcd";
_Legend2 = "efgh";
Si es así, ¿necesitaría usar lo siguiente para administrar el uso de una variable?
Eval(
Substitute(
Expr(
Finalmente, ¿es probable que esta opción sea la única forma de lograr una manipulación más "directa" del texto de la leyenda?
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?¿Sería posible hacer algo como esto en sus scripts de creación de gráficos?
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: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Gracias por confirmar que no me he perdido algo que es obvio.
Desafortunadamente, no veo (o no puedo ver) cómo las “Etiquetas de valor” pueden hacer lo que busco lograr. Mi objetivo, en cierta medida, es modificar efectivamente el nombre de la columna, no manipular los valores de datos que se encuentran en las filas debajo del título de la columna.
Si hago una tabla simple con algunos valores en el texto, la leyenda cambia si uso "Establecer nombre" para una columna determinada, por ejemplo, "Columna (dt, 1) << Establecer nombre ("Nuevo nombre");" Esta única línea de sintaxis da como resultado que el texto de los datos de la columna 1 se actualice y se convierta en "Nuevo nombre".
El gráfico de mis datos reales tiene textos de leyenda del tipo “Mean(…Tag Name…)”. Si uso << Establecer nombre con mis datos reales, todavía tengo un texto de leyenda problemático porque incluye "Mean (... nombre de columna...)".
Sería bueno conocer cualquier idea sobre cómo manipular el texto de la leyenda para una columna determinada. Tal vez solo haga una leyenda desde cero para que todas las propiedades en una leyenda "hecha a sí misma" sean accesibles y manipulables. Me gustaría que sea algo escrito y no algo que requiera atención manual cada vez que hago un nuevo gráfico (probablemente todos los días).
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Los detalles en el índice de secuencias de comandos para un cuadro de leyenda () no muestran ningún mensaje que permita cambiar las etiquetas reales en una leyenda. Sin embargo, dado que los valores en la leyenda provienen directamente de los valores en la tabla de datos, simplemente puede cambiar/recodificar los valores en la tabla de datos o establecer la propiedad de columna "Etiquetas de valor".