Indicador de progreso del script JMP<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Con algunas búsquedas en este foro y profundizando en el libro de secuencias de comandos JMP, he logrado que mi secuencia de comandos de progreso funcione principalmente.Lo único que no me gusta es que el eje vertical (y) tiene números. ¿Puedo apagarlos? No pude encontrar una manera de hacer esto.No estoy seguro de si debería usar algo más que un cuadro de gráfico (), pero mi conocimiento de esto es bastante limitado.
dlgStatus = nueva ventana ("Progreso de la conversión",
dlg_gb = cuadro de gráfico (
Título ("Progreso de la conversión"),
Tamaño de fotograma ( 200, 30),
escalax(0,100),
yscale(0, 1), // <---- ¿cómo apagar para que no vea los valores del eje y?
yaxis (muestra los ticks principales (0), muestra los ticks menores (0)),
xname("% completado"),
y nombre("")
)
);
dlgStatus[FrameBox(1)] << Agregar script de gráficos({Fill Color("blue"),Rect(0,1,50,0,1)}); // 50 % en una escala hasta 100 % que se muestra en la escala x anterior. no se escala al conteo de píxeles en el tamaño del marco ()
dlgStatus[FrameBox(1)] << Agregar script de gráficos({Fill Color("blue"),Rect(0,1,75,0,1)}); // 75 % en una escala hasta el 100 % que se muestra en la escala x anterior.
// lo anterior es solo una prueba.el 50 y el 75 serían una variable de índice de bucle dividida por el recuento de bucles, en mi script real. Se ejecutaría una vez en cada iteración de bucle.
dlgStatus << cerrarventana();
Gracias.
Re: Indicador de progreso del script JMPSi su secuencia de comandos ejecuta un solo bucle, puede usar el ejemplo de SDF1 y simplemente actualizar la variable prog en todo momento. Para ahorrar tiempo y no actualizar cada iteración, actualizo cada 10 o 50 (no recuerdo exactamente) usando una función mod () de la variable de iteración. Es posible que JMP haya mejorado esto en los últimos 11 años desde que creé el código, pero inicialmente ralentizó el script para actualizar la barra en cada iteración, mientras iteraba entre unos cientos y miles de columnas.
Si su secuencia de comandos no está en bucle, sino que está procesando varias operaciones, es posible que deba actualizar la barra de progreso en toda la secuencia de comandos. Por ejemplo, si tiene 10 operaciones que toman 30 segundos cada una, aumente en un 10 % el progreso en cada paso. Este sería un proceso manual de su parte para determinar cuánto tiempo tardaba en ejecutarse cada sección de código.
Si hay alguna combinación de lo anterior, puede ser creativo al respecto, pero de cualquier manera dependerá de usted averiguar cómo se distribuye el tiempo de ejecución en su secuencia de comandos y luego trazar el progreso en consecuencia. JMP no lo hará automáticamente, debe escribir el código para actualizar la barra según el progreso.
Todo esto supone que, aunque hay computadoras más rápidas y más lentas, cada fragmento de código requerirá una cantidad comparablemente proporcional de tiempo de ejecución total para ejecutarse, lo cual es bastante razonable.
Re: Indicador de progreso del script JMPHaga una pregunta, cuando mi programa se ejecuta durante mucho tiempo, aproximadamente 5 minutos, y el tiempo se ejecuta de manera diferente en diferentes computadoras, ¿cómo puedo hacer una barra de progreso correspondiente en función del tiempo de espera real?
Re: Indicador de progreso del script JMPCreo que @pmroz ofrece una solución directa simple que es segura en este caso. Sin embargo, tenga en cuenta que usar el mensaje << Eliminar para eliminar un objeto de cuadro de visualización del árbol de visualización puede ser peligroso en otros casos. Hay al menos otros dos enfoques por este motivo. En general, puede modificar la visibilidad de un cuadro de visualización con el mensaje << Visibilidad(). Utilice el argumento Collapse en este caso. El otro es un protocolo único para el objeto Axis Box. Ver ejemplos aquí:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
axis box = Report( biv )[AxisBox( 1 )];
axis box << Remove Axis Label( "weight" );
axis box << Show Major Labels( 0 );
axis box << Show Major Ticks( 0 );
Re: Indicador de progreso del script JMPHola @mikedriscoll y @pmroz ,
Hace poco encontré esta publicación porque quería generar una ventana de progreso similar que en realidad diera el número de iteración X de Y en una larga ejecución de modelado. De todos modos, tomé su solución, la modifiqué y la agregué a una en la que estaba trabajando. aquí ., así que ahora tengo tanto la barra de progreso como los números reales. Me gusta. Probablemente tendré que modificarlo según las preferencias de mi usuario, pero es un gran comienzo. ¡Gracias por iniciar esta discusión!
Names Default To Here( 1 );
i = 1;
imax = 100;
dlgStatus = New Window( "Overall Modeling Progress",
V List Box(
dlg_gb = Graph Box(
Title( "Overall Modeling Progress" ),
FrameSize( 150, 15 ),
X Scale( 0, 100 ),
Y Scale( 0, 1 ),
yaxis( show major ticks( 0 ), show minor ticks( 0 ) ),
xname( "% complete" ),
yname( "" )
),
tb = Text Box(
" Current step " || Char( i ) || " of " || Char( imax ),
<<SET font="" size=""></SET>
SD
Re: Indicador de progreso del script JMPGracias, funcionó perfectamente.
El (1) se deshizo de mi eje y. Dejé el (2) en su lugar para mostrar %.
También descubrí que necesitaba un poco de espera (más que una espera (0);) para actualizar el gráfico... aquí está el final de mi ciclo donde actualizo el cuadro del gráfico:
| | progreso = piso ((paramNum / numParams) * 100); |
| | dlgStatus[FrameBox(1)] << Agregar script de gráficos({Fill Color("blue"),Rect(0,1,progress,0,1)}); //progreso de actualización |
| | esperar (0.001); |
);
No estoy seguro de si necesitaba la función "piso", pero no duele en mi caso.
Re: Indicador de progreso del script JMPPuedes deshacerte de los ejes con estos comandos:
dlg_gb[AxisBox( 2 )] << Delete;
dlg_gb[AxisBox( 1 )] << Delete;
Pon estas dos líneas justo antes de la primera dlgEstado[Cuadro(1)]... dominio.