Agregar dinámicamente gráficos de distribución a una tablaTengo una tabla con aproximadamente ~180 columnas de datos.
Me gustaría agregar dinámicamente un gráfico de distribución (a la tabla) para cada columna mediante un bucle for en JSL (con un filtro de datos local específico para cada columna).
es posible? Lo que sucede en mis intentos es que todos los gráficos adjuntos son el último valor del bucle for. Probablemente me estoy perdiendo algo simple.
¡gracias!
Automatización y secuencias de comandosRe: Agregar dinámicamente gráficos de distribución a una tablaEs posible.Si puede adjuntar una versión desinfectada de su script, será más fácil y rápido ayudarlo.
Re: Agregar dinámicamente gráficos de distribución a una tablaNo estoy seguro de qué estás buscando exactamente.Aquí hay un script simple que crea todas las distribuciones con el filtro de datos local.
Names Default To Here( 1 );
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
ColNames = dt << get column names( string, numeric );
nw = New Window( "Distributions",
H List Box(
For Each( {Col}, ColNames,
Eval(
Eval Expr(
Distribution(
Continuous Distribution( Column( Eval( col ) ) ),
Local Data Filter( Add Filter( columns( Eval( col )) ) )
)
)
)
)
)
);

Re: Agregar dinámicamente gráficos de distribución a una tablaAquí hay una versión abreviada:
Clear Log();
Clear Globals();
dt = current data table ();
myTests = {:Name ("Cont_VDD"), :Name ("Cont_OUTP")};
for (i=1, i<= 2, i++,
dt << Add Properties to Table(
{New Script(
"Distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column( myTests[i] ) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Process Capability( Use Column Property Specs )
)
)
});
);
Re: Agregar dinámicamente gráficos de distribución a una tablaSu secuencia de comandos no desarrolla completamente el JSL requerido para permitir que funcionen las secuencias de comandos de la tabla.La referencia de myTests debe analizarse en el nombre exacto de la columna para que el script de la tabla pueda ejecutarse correctamente.El JSL siguiente fuerza la expansión del código antes de guardarlo en la tabla de datos.También agregué un filtro local y también cambié el código para que el nombre del script sea el nombre de la columna.
Names Default To Here( 1 );
Clear Log();
Clear Globals();
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
myTests = dt << get column names( string, numeric );
For( i = 1, i <= N Items( myTests ), i++,
Eval(
Eval Expr(
dt << Add Properties to Table(
{New Script(
expr(myTests[i]),
Distribution(
Stack( 1 ),
Continuous Distribution( Column( Expr( myTests[i] ) ) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Process Capability( Use Column Property Specs ),
Local Data Filter( Add Filter( columns( Expr( myTests[i] )) ) )
)
)}
)
)
)
);
Re: Agregar dinámicamente gráficos de distribución a una tablaSi utiliza una variable global en el script de inicio de Distribución, utilizará el valor actual almacenado en la variable. Debe convertirlo a un valor literal para el script de inicio.
Re: Agregar dinámicamente gráficos de distribución a una tabla¡¡¡muchas gracias!!!Aprendí JSL por mi cuenta... y me encontré con algunos obstáculos en el camino... ahora tengo claro el uso de Eval... ¡gracias de nuevo!
--Mate
Re: Agregar dinámicamente gráficos de distribución a una tablaAdemás, si lo que busca son solo histogramas simples, a partir de JMP 15, se puede mostrar un histograma encima de cada columna simplemente seleccionando el icono de histograma en la tabla de datos.
