¿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. (Cambiar la escala de los ejes, cambiar el nombre de 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 tener el gráfico de salida todo automatizado.
Mi archivo JMP tiene por defecto los nombres de las etiquetas como encabezados de columna que no son en absoluto informativos como una leyenda de gráfico. Una forma de hacerlo 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 ves 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 he tenido éxito en las numerosas cosas que he probado.
Cualquier orientación sobre esto sería muy apreciada.
Como se dijo, usando JSL, ¿cómo acceder al texto de la leyenda para cambiarlo de su valor predeterminado?
Gracias.
ScriptingRe: ¿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 el cambio de 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 la columna "Etiquetas de valor".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 estoy buscando lograr. Mi objetivo, hasta cierto punto u otro, es modificar eficazmente el nombre de la columna, no manipular los valores de los 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 de la leyenda, cambia si uso "Establecer nombre" para una columna determinada, por ejemplo, "Columna (dt, 1) << Establecer nombre (" Nuevo nombre ");" Esta línea de sintaxis da como resultado que el texto 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 "Media (... Nombre de etiqueta ...)". Si uso << Establecer nombre con mis datos reales, todavía tengo un texto de leyenda problemático porque incluye “Media (… nombre de columna…)”.
Sería bueno saber cualquier idea sobre cómo manipular el texto de la leyenda para una columna determinada. Quizás simplemente hago una leyenda desde cero para que todas las propiedades de una leyenda "hecha a sí mismo" sean accesibles y manipulables. Me gustaría que fuera algo escrito y no algo que requiera atención manual cada vez que hago un nuevo gráfico (probablemente a diario).
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?¿Sería posible hacer algo como esto en los scripts de su generador 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. 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 la sintaxis de Graph Builder de ejemplo:
_Legend1 = "abcd";
_Legend2 = "efgh";
Si es así, ¿necesitaría usar lo siguiente para administrar el uso de una variable?
Eval(
Substitute(
Expr(
Finalmente, ¿esta opción es probablemente 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)?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 el Generador de gráficos. 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)?Querido Paul,
En el PNG adjunto, verá la salida del generador de gráficos que obtengo ejecutando 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 ella.
En el segundo PNG ves lo que estaba pensando que vería después de la ejecución de tu sintaxis completa.
Si aún puede investigar esto y dejarme saber una forma, estaría muy agradecido. Gracias, Scott.
Re: ¿Cómo cambiar los nombres de las leyendas en JSL (en Graph Builder)?Lo siento. Esa es una característica nueva en JMP 16. No me di cuenta de que se acababa de agregar y no estaba disponible en JMP 15. Deberá probar el primer método hasta que JMP 16 esté disponible. Nuevamente, me disculpo por la desinformación.