Establecer ejes de gráficos y títulos como variablesHola a todos, novato aquí:
Estoy trabajando con un conjunto de datos en un proceso que espero repetir muchas veces, por lo que estoy tratando de automatizar la configuración lo mejor que puedo. Por el momento, estoy trabajando en una presentación de datos, y necesito su ayuda para hacer que los títulos de los ejes de un gráfico sean variables según el contenido de las celdas.
como ejemplo tengo los siguientes datos:

a partir de estos datos, quiero trazar un gráfico que muestre "Res" para cada valor de "Col A", así como una serie de líneas de referencia que muestren "Ref" (y sus condiciones de contorno "+/-uref" y "rob" y su condiciones de contorno "+/- urob".
Actualmente el script es el siguiente:
dt = Current Data Table();
Graph Builder(
Size( 743, 472 ),
Show Control Panel( 0 ),
Variables(
X( :COLA, Order By( :Res, Ascending, Order Statistic( "Mean" ) ) ),
Y( :Res ),
Interval( :Ures )
),
Elements( Points( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"COLA",
ScaleBox,
{Label Row(
{Label Orientation( "Vertical" ), Set Font Size( 12 ),
Set Font Style( "Italique" )}
)}
),
Dispatch(
{},
"Res",
ScaleBox,
{Min(), Max(), Inc(), Minor Ticks( 1 ),
Add Ref Line( dt[1, 11], "Solid", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 9], "Dotted", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 10], "Dotted", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 4], "Solid", "Dark Red", "", 1 ),
Add Ref Line( {dt[1, 7], dt[1, 8]}, "Solid", "Medium Dark Red", "", 1, 0.15 ),
Add Ref Line( dt[1, 7], "Dotted", "Dark Red", "", 1 ),
Add Ref Line( dt[1, 8], "Dotted", "Dark Red", "", 1 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Analyte res" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "COLA" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Units of Res (g/m3)" )} ),
Dispatch( {}, "400", LegendBox, {Legend Position( {7, [-1, -3]} )} )
)
);
Lo cual funciona bien y es lo suficientemente flexible como para poder modificar las líneas de referencia en el gráfico de acuerdo con los valores de las celdas según sea necesario.
Ahora, lo que me gustaría también es que los títulos puedan hacer lo mismo que las líneas de referencia. Entonces, idealmente, podría agregar una columna inicial en mi tabla jmp, que llamaremos "info" que tiene la información sobre el analito estudiado (nombre, unidades utilizadas para la medición, etc.) y me gustaría el título del gráfico. (y ejes) para extraer la información de estas celdas (como lo están haciendo actualmente las líneas de referencia) y usar esta información en el texto.
Por ejemplo, si en mi columna "información" tengo "Zr4+", me gustaría que el gráfico final busque esta celda y la use para etiquetarse a sí misma o a uno de sus ejes. De modo que pueda cambiar la celda a "Br7-" y la próxima vez que ejecute el script, el nuevo gráfico se etiquetará con "Br7-".
¿Es posible hacer esto?
puntos de bonificación si la variable se puede insertar en un texto más largo, por ejemplo, el eje y es "Zr 4+ (mg/l)" y luego cambia a "Br7- (mg/l)"
La personalización en masaventanasRe: Establecer ejes de gráficos y títulos como variablesGracias por esto,
Haré lo que dices y leeré la guía. De hecho, mi trabajo con JSL es la primera vez que realizo secuencias de comandos/codificación en mi vida, ¡así que hay muchas lógicas específicas que aún necesito aprender!
Re: Establecer ejes de gráficos y títulos como variablesEl problema que parece tener es cómo proporcionar a TextEditBox() el elemento con la sintaxis correcta.
La especificación para Establecer texto, tal como se encuentra en el Índice de secuencias de comandos, es:

Entonces, básicamente, lo que debe proporcionarse es una "Cadena".En JSL, casi cualquier cosa se puede poner en una cadena.Del ejemplo en el script de muestra
gbr[TextEditBox(1)] << set text(column(dt,"info")[1]);
El valor de la primera fila de la columna "info" se envía a TextEditBox(), y dado que la columna "Indo" tiene un tipo de carácter de modelado, los valores en cada celda son una "Cadena".
JSL permite la construcción de cadenas de muchas maneras diferentes.Le sugiero encarecidamente que se tome el tiempo de leer la Guía de secuencias de comandos que se puede encontrar en la Biblioteca de documentación de JMP, disponible en el menú desplegable Ayuda.
Pero para una ilustración simple, si desea tener "Graph 5 Analysis Res", simplemente podría establecerse como
gbr[TextEditBox(1)] << set text( "Graph 5 " || column(dt,"info")[1]);
Donde la cadena pasada a TextEdibox() es una Cadena hecha de concatenar la cadena "Graph 5" con la cadena de la celda de la primera fila de la columna Información.
Re: Establecer ejes de gráficos y títulos como variablesHola Jim,
He estado jugando un poco más con el guión y los títulos de los ejes.
La solución que proporcionó funciona muy bien para cosas básicas, me preguntaba si hay una manera de introducir un elemento variable y un elemento fijo en la parte "establecer texto".
Eventualmente, del script en el que me ayudaste a trabajar, estoy extrayendo tres o cuatro gráficos diferentes, ahora me gustaría que el título de cada gráfico extraiga texto de una celda e incorporelo a otro texto (de otra celda, o escrito directamente en un guión, no soy quisquilloso.
Para explicarme, actualmente el título de mi gráfico terminará como "analyte res" (que ya está muy por delante de donde estaba antes), me gustaría ir un paso más allá y tener algo como "graph 5: [Analyte res]" de modo que solo puedo cambiar la parte "analyte res" y cambiará el título. de manera similar, sería bueno poder tener el eje y etiquetado como "[analito] [cantidad medida (masa, concentración, volumen,...)] [unidad (g, mg/L, cm3... )]" de modo que pueda cambiar cada una de las tres variables en las celdas elegidas de acuerdo con mis necesidades para cada gráfico diferente.
He jugado con el parámetro "establecer texto", pero no parece gustarle un sistema mixto como ese (o incluso extraer de varias celdas). así que mi solución alternativa más prometedora es simplemente agregar un cuadro de texto al lado del título y el eje y, aunque, por supuesto, no es una solución elegante y sospecho que en ciertos casos debo tener cuidado de no inducir la superposición entre los dos cuadros de texto. ...
¿Algunas ideas?
Re: Establecer ejes de gráficos y títulos como variables)Querido Jim, gracias por eso, ¡eso funciona!
Re: Establecer ejes de gráficos y títulos como variablesAgregué una nueva columna de información a su tabla de datos

Y modificó su script para usarlo para obtener los valores de las etiquetas.También modifiqué su secuencia de comandos para usar una forma más directa de agregar las líneas de referencia al gráfico.

Names Default To Here( 1 );
dt = Current Data Table();
gb = dt << Graph Builder(
Size( 743, 472 ),
Show Control Panel( 0 ),
Variables( X( :COLA, Order By( :Res, Ascending, Order Statistic( "Mean" ) ) ), Y( :Res ), Interval( :Ures ) ),
Elements( Points( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch( {}, "COLA", ScaleBox, {Label Row( {Label Orientation( "Vertical" ), Set Font Size( 12 ), Set Font Style( "Italique" )} )} ),
Dispatch( {}, "Res", ScaleBox, {Min(), Max(), Inc(), Minor Ticks( 1 )} ),
Dispatch( {}, "400", LegendBox, {Legend Position( {7, [-1, -3]} )} )
)
);
gbr = gb << report;
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 11], "Solid", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 9], "Dotted", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 10], "Dotted", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 4], "Solid", "Dark Red", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( {dt[1, 7], dt[1, 8]}, "Solid", "Medium Dark Red", "", 1, 0.15 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 7], "Dotted", "Dark Red", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 8], "Dotted", "Dark Red", "", 1 );
gbr[TextEditBox(1)] << set text(column(dt,"info")[1]);
gbr[TextEditBox(3)] << set text(column(dt,"info")[2]);
gbr[TextEditBox(4)] << set text(column(dt,"info")[3]);