Agregue líneas de referencia (que permitan rangos, por variable de columna) en páginas separadas en Graph BuilderTengo varias columnas de datos numéricos, junto con una columna de fecha y hora numérica continua, al segundo más cercano. Puedo trazar cualquiera o todos estos por fecha y hora en una serie temporal para verlos simultáneamente. Hay una columna nominal de caracteres de "grupo" que en Graph Builder puedo usar para separar el análisis por página.
Hay otra columna de fecha numérica continua, "Fecha del evento", que es al día más cercano (unido desde otra tabla) que coincide con cada valor de "grupo". Habría un valor único de Fecha de evento para una variable de "grupo" determinada. Me gustaría automatizar o agregar líneas de referencia desde la columna "Fecha del evento" al eje x, sin embargo, con "Permitir rangos", estableciendo el valor mínimo como la fecha del evento a las 12:00:00 a. m. y el valor máximo como Fecha del evento a las 11:59:59 p. m. según la variable de la columna "grupo", con la intención de que cada "grupo" aparezca en una página separada. A continuación se muestra un ejemplo de cómo se vería en una página, junto con el típico cuadro de diálogo Línea de referencia en Configuración del eje en Graph Builder como referencia:


Análisis y modelado de datos básicosExploración y visualización de datosRe: Agregar líneas de referencia (permitiendo rangos, por variable de columna) en páginas separadas en Graph BuilderSi selecciona utilizar un cuadro de diálogo para configurar Graph Builder

Puede utilizar una columna By() en lugar de especificarla como una columna de Página. Al hacer esto, cada salida de visualización de Graph Builder mostrada puede tener líneas de referencia de rango separadas.

names default to here(1);
dt=
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
SendToByGroup( {:sex == "F"} ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
By( :sex ),
SendToByGroup(
{:sex == "F"},
SendToReport(
Dispatch( {}, "weight", ScaleBox,
{Add Ref Line(
{100, 120},
"Solid",
"Medium Light Red",
"",
1,
0.25
)}
)
)
),
SendToByGroup(
{:sex == "M"},
SendToReport(
Dispatch( {}, "weight", ScaleBox,
{Add Ref Line(
{140, 160},
"Solid",
"Medium Light Red",
"",
1,
0.25
)}
)
)
)
);Re: Agregar líneas de referencia (permitiendo rangos, por variable de columna) en páginas separadas en Graph BuilderGracias @txnelson .
Esto puede funcionar, pero me pregunto si en lugar de especificar manualmente la posición de cada línea de referencia de Por grupo, podría llamar a la columna Fecha del evento para establecer las posiciones de las líneas de referencia de alguna manera. ¿Es eso posible?Re: Agregar líneas de referencia (permitiendo rangos, por variable de columna) en páginas separadas en Graph Builder¿Podrías compartir un ejemplo de tus datos/crear una maqueta de datos? Puede que haya algunos métodos un poco más complicados en el generador de gráficos para lograr esto sin depender de secuencias de comandos.
Re: Agregar líneas de referencia (permitiendo rangos, por variable de columna) en páginas separadas en Graph BuilderPor supuesto, los rangos de referencia se pueden establecer en función de los valores de otras columnas o de los resultados de las plataformas JMP. Solo estaba ilustrando una manera de hacer que los diferentes niveles de la columna Página sean referenciables cambiando al uso de By(). A continuación se muestra una expansión simple del ejemplo que proporcioné anteriormente. Establece el rango de la línea de referencia en función de la media y el estándar de la columna del eje X para cada uno de los gráficos.

Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
// This example sets the range of the reference lines based upon the mean +- 1 std
// of the weight column for each level of the sex column
Summarize( dt, sexGroup = by( :sex ), means = Mean( :weight ), stds = Std Dev( :weight ) );
Eval(
Eval Expr(
Graph Builder(
SendToByGroup( {:sex == "F"} ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
By( :sex ),
SendToByGroup(
{:sex == "F"},
SendToReport(
Dispatch( {}, "weight", ScaleBox,
{Add Ref Line(
{Expr( means[1] - stds[1] ), Expr( means[1] + stds[1] )},
"Solid",
"Medium Light Red",
"",
1,
0.25
)}
)
)
),
SendToByGroup(
{:sex == "M"},
SendToReport(
Dispatch( {}, "weight", ScaleBox,
{Add Ref Line(
{Expr( means[2] - stds[2] ), Expr( means[2] + stds[2] )},
"Solid",
"Medium Light Red",
"",
1,
0.25
)}
)
)
)
)
)
);
El lenguaje de scripting (JSL) de JMP tiene la capacidad de hacer casi cualquier cosa que usted imagine que necesita hacer. Le sugiero que se tome el tiempo para leer la Guía de secuencias de comandos que le brindará conocimientos sobre cómo JSL puede lograr lo que desea.