Crear un bucle para mostrar líneas de referencia en un gráficoHola a todos,
Estoy usando JMP15 desde hace 1 año, pero estoy empezando a interesarme en los scripts.
Me gustaría escribir un script para mostrar las líneas de referencia en un gráfico, basado en una tabla.
Tengo 2 tablas: datos (en los que ejecuto el script, para trazar valor = f (tiempo)) y fechas, que contienen una columna con fechas correspondientes a las líneas de referencia que me gustaría tener en el gráfico.
Esas tablas están adjuntas a mi publicación.
Aquí está mi secuencia de comandos actual, que muestra una línea de referencia basada en el primer elemento de las fechas de la tabla, la fecha de la columna.
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} ) )
);Me gustaría crear un bucle "Para" para crear automáticamente líneas de referencia para cada valor de la tabla "fechas".
Esto es lo que probé:
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ),
{
For( i = 1, i <= N row( dates), i++,
f = dates [ i ];
Add Ref Line( f, "Dotted", "Blue", "", 2 )
);
})
);Pero cuando ejecuto el script, no aparece ninguna línea de referencia.
¿Cómo puedo solucionar este problema?
Última pregunta: si no agrego "Page(:cat)" en las variables del gráfico, no aparece ninguna línea de referencia...
Gracias por tu ayuda !!
Gráficossecuencias de comandosRe: Crear un bucle para mostrar las líneas de referencia en un gráfico¡Bienvenido a la comunidad de discusión!
Aquí hay una forma de agregar las líneas de referencia.

La documentación sobre cómo utilizar los árboles de visualización para manipular la salida de JMP se encuentra en el índice de secuencias de comandos.
Names Default To Here( 1 );
dt = Data Table( "data" );
dates = Data Table( "dates" );
ref1 = dates:name( "date" )[1];
gb = Graph Builder(
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} )
)
);
// Add reference lines
For( i = 1, i <= N Rows( dates ), i++,
// Add for Cat = B
(Report( gb )[axisbox( 1 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
// Add for Cat = C
(Report( gb )[axisbox( 3 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
);
Re: Crear un bucle para mostrar las líneas de referencia en un gráficoGracias Jim por tu rápida respuesta, ¡realmente útil!
Re: Crear un bucle para mostrar las líneas de referencia en un gráficoAquí hay una solución que no usa árboles de visualización.
Names Default To Here( 1 );
dt = Data Table( "data" );
dts = Data Table( "dates" );
// Get the unique values of cat
summarize(cat_unique = by(dt:cat));
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
);
// Add reference lines
for (c = 1, c <= nitems(cat_unique), c++,
scbox = c + 1;
for (i = 1, i <= nrows(dts), i++,
ref = dts:date[i];
gb << SendToReport(
Dispatch( {}, "time", ScaleBox( scbox ), {Add Ref Line( ref, "Dotted", "Red", "", 2 )} )
);
);
);