[Script JLS]: bucle para trazar varios gráficos juntosHola,
Soy nuevo en JMP. ¡Es un software poderoso!
Es por eso que me gustaría escribir un script que pueda trazar varias Y de diferentes columnas (en realidad, cada n columna) en función de una X.
Lo escribí gracias a la interfaz del generador de gráficos, pero me gustaría escribirlo en un bucle.
Hice algo así para trazar la distribución (pero desafortunadamente no es la misma escala...)
//Distributions Std Dev
New Window( "Side by Side",
H List Box(
Distribution(
Continuous Distribution( Column( :median_range_mm ))
);
for ( p = 2, p <= 64, p++,
nom = "median_range_mm " || char(p);
col = Column(nom);
Distribution(
Continuous Distribution( Column( col ), Std Error Bars( 1 ) );
/*SendToReport(
Dispatch(
{"Distributions", Column( col )},
"1",
ScaleBox,
{Min( 1450 ), Max( 1820 ), Inc( 20 ), Minor Ticks( 0 ),
Label Row Nesting( 1 )}
)
)*/
)
)
)
Esto es lo que probé para mi problema principal, el resultado es solo una ventana de apertura del generador de gráficos.
Me gustaría trazar la columna [ref, ref 1, ref 2 hasta ref 64] en el eje Y y currentTimeMillis en el eje X
New Window( "Ref",
H List Box(
Graph Builder(
For (r = 2 , r <= 64, r++,
name = "ref " || char(r);
col = Column(name);
Variables( X( :currentTimeMillis ), Y (Column (col), Position( 1 ) ) ),
Elements(
Points( X, Y(r) , Legend( 29 ) ),
Smoother( X , Y(r), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
)
);Gracias por tu ayuda.
Salud
Re: [Script JLS]: bucle para trazar varios gráficos juntosUno puede crear fácilmente objetos de salida, que pueden crearse con anticipación y luego mostrarse a pedido del usuario.O, debido a la velocidad de JMP, muchas de mis aplicaciones generan salidas específicas en el momento de la solicitud de un usuario.También debe explorar el conmutador de columnas que permitirá al usuario seleccionar de una lista qué columnas analizar y mostrar.
Re: [Script JLS]: bucle para trazar varios gráficos juntos¿Es posible guardar un gráfico individual (como una lista de fácil acceso) para su uso posterior en lugar de trazarlos todos en un solo cuadro de lista H?gracias.
Re: [Script JLS]: bucle para trazar varios gráficos juntosEstoy un poco confundido... pero ofrezco este código como un posible ejemplo de una solución.Parece del último código que proporcionó, que está cambiando los nombres de las columnas en su tabla de datos, a "Ref".Dado que JMP no le permitirá tener 2 columnas con el mismo nombre, la segunda columna que intenta cambiar el nombre de "Ref", en realidad se llama "Ref 2".Y eso continúa hasta la columna "Ref 64".También sugiero que vuelva a verificar su código para el nombre de la columna "currentTimeMillis".En su código, en realidad cambia el nombre de esa columna (al mismo nombre), 64 veces.
A continuación se muestra mi nuevo código... utiliza una tabla de datos de muestra... las columnas llamadas Ref - Ref 64 están todas en un orden contiguo, pero como a JMP realmente no le importa, el código también funciona para su tabla de datos, donde las columnas se distribuyen en sus más de 700 columnas
Names Default To Here( 1 );
// Build some sample data
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Column( dt, 6 ) << set name( "ref" );
For( i = 7, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
// Build the JSL code for the Graph Builder
theExpr = "dt << Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( :ref )";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( :ref " || Char( i ) || ", Position( 1 ) )"
);
theExpr = theExpr || "),
Elements(
Points(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || "
,Legend( 5 )
),
Smoother(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || " ,
Legend( 6 )
)
)
)";
// Execute the generated code
Eval( Parse( theExpr ) );
Re: [Script JLS]: bucle para trazar varios gráficos juntos¡Gracias por tu respuesta Jim!
Pero puede que haya tergiversado mi problema.
De hecho, me gustaría tener toda mi trama en el mismo gráfico .
Además, mi columna Y ya se ha configurado cada 11 columnas, y currentTimeMillis aparece solo una vez al principio:
//Set columns
For( i = 1, i <=709 , i++,
For ( j = 0, j <= 63, j++,
If ( i == 2, Column(i) << set name( "currentTimeMillis" ),i == 15 + 11*j, Column(i) << set name( "ref" ),
)
)
)Finalmente, "__col__" no se ha definido ("col" se definió pero en otra función para la distribución), por lo que no entiendo por qué lo usaste aquí.
Gracias de nuevo.
Re: [Script JLS]: bucle para trazar varios gráficos juntosAquí hay un ejemplo de cómo lo haría
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
For( i = 6, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
New Window( "Ref",
hlb = H List Box(
)
);
For( r = 2, r <= 64, r++,
name = "ref " || Char( r );
Eval(
Substitute(
Expr(
outputhlb = H List Box(
Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( Column( __col__ ), Position( 1 ) )
),
Elements(
Points( X, Y( r ), Legend( 29 ) ),
Smoother( X, Y( r ), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
),
Expr( __col__ ), Parse( ":" || name )
)
);
hlb << append( outputhlb );
);