Indicatore di avanzamento dello script JMP<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />CIAO,
Con alcune ricerche su questo forum e scavando nel libro di scripting di JMP, sono riuscito a far funzionare principalmente il mio script di avanzamento.L'unica cosa che non mi piace è che l'asse verticale (y) contiene dei numeri. Posso disattivarli? Non sono riuscito a trovare un modo per farlo.Non sono sicuro se dovrei usare qualcosa di diverso da un grafico box () ma la mia conoscenza di questo è abbastanza limitata.
dlgStatus = nuova finestra("Avanzamento conversione",
dlg_gb = riquadro grafico(
Titolo ("Avanzamento della conversione"),
FrameSize ( 200, 30),
xscala(0,100),
yscale(0, 1), // <---- come disattivare in modo da non vedere i valori dell'asse y?
asse y (mostra segni di spunta principali (0), mostra segni di spunta minori (0)),
xname("% completo"),
ynome("")
)
);
dlgStatus[FrameBox(1)] << Aggiungi Grafica Script({Fill Color("blue"),Rect(0,1,50,0,1)}); // 50% su una scala fino al 100% mostrata nella xscale sopra. non viene ridimensionato al numero di pixel nella dimensione del fotogramma()
dlgStatus[FrameBox(1)] << Aggiungi Grafica Script({Fill Color("blue"),Rect(0,1,75,0,1)}); // 75% su una scala fino al 100% mostrata nella xscale sopra.
// sopra è solo un test.il 50 e il 75 sarebbero una variabile dell'indice del ciclo divisa per il conteggio del ciclo, nel mio vero script. Verrebbe eseguito una volta in ogni iterazione del ciclo.
dlgStatus << chiudifinestra();
Grazie.
Ri: Indicatore di avanzamento dello script JMPSe il tuo script esegue un singolo ciclo, puoi utilizzare l'esempio di SDF1 e aggiornare semplicemente la variabile prog. Per risparmiare tempo e non aggiornare ogni iterazione, aggiorno ogni 10 o 50 (non ricordo esattamente) utilizzando una funzione mod() della variabile iterante. JMP potrebbe averlo migliorato negli ultimi 11 anni da quando ho creato il codice, ma inizialmente ha rallentato lo script per aggiornare la barra a ogni iterazione, iterando da poche centinaia a poche migliaia di colonne.
Se il tuo script non è in loop, ma sta invece elaborando diverse operazioni, potrebbe essere necessario aggiornare semplicemente la barra di avanzamento in tutto lo script. Ad esempio, se hai 10 operazioni che richiedono 30 secondi ciascuna, incrementa il progresso del 10% ad ogni passaggio. Questo sarebbe un processo manuale da parte tua per determinare quanto tempo impiegava ciascuna sezione di codice per l'esecuzione.
Se c'è una combinazione di quanto sopra, potresti essere creativo al riguardo, ma in entrambi i casi spetterà a te capire come viene distribuito il tempo di esecuzione nel tuo script e quindi tracciare l'avanzamento di conseguenza. JMP non lo farà automaticamente, devi scrivere il codice per aggiornare la barra in base allo stato di avanzamento.
Tutto ciò presuppone che anche se ci sono computer più veloci e più lenti, ogni blocco di codice richiederà una quantità relativamente proporzionale del tempo di esecuzione totale per essere eseguito, il che è abbastanza ragionevole.
Ri: Indicatore di avanzamento dello script JMPSi prega di porre una domanda, quando il mio programma viene eseguito per molto tempo, circa 5 minuti e il tempo viene eseguito in modo diverso su computer diversi, come posso creare una barra di avanzamento corrispondente in base al tempo di attesa effettivo?
Ri: Indicatore di avanzamento dello script JMPpenso che @pmroz offre una semplice soluzione diretta che è sicura in questo caso. Tenere presente, tuttavia, che l'utilizzo del messaggio << Elimina per rimuovere un oggetto casella di visualizzazione dall'albero di visualizzazione potrebbe essere pericoloso in altri casi. Ci sono almeno altri due approcci per questo motivo. In generale è possibile modificare la visibilità di una finestra di visualizzazione con il messaggio << Visibility(). Utilizzare l'argomento Collapse in questo caso. L'altro è un protocollo univoco per l'oggetto Axis Box. Vedi esempi qui:
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 );
Ri: Indicatore di avanzamento dello script JMPCIAO @mikedriscoll E @pmroz ,
Di recente mi sono imbattuto in questo post poiché volevo generare una finestra di avanzamento simile che in realtà fornisse il numero di iterazione X su Y in una lunga corsa di modellazione. Ad ogni modo, ho preso la tua soluzione, l'ho modificata e aggiunta a quella su cui stavo lavorando Qui ., quindi ora ho sia la barra di avanzamento che i numeri effettivi. Mi piace. Probabilmente dovrò modificarlo per le preferenze del mio utente, ma è un ottimo inizio. Grazie per aver aperto questa discussione!
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>
DS
Ri: Indicatore di avanzamento dello script JMPGrazie, ha funzionato perfettamente.
Il (1) si è sbarazzato del mio asse y. Ho lasciato il (2) in posizione per mostrare %.
Ho anche scoperto che avevo bisogno di un po 'di attesa (più di un'attesa (0);) per aggiornare il grafico ... ecco la fine del mio ciclo in cui aggiorno la casella del grafico:
| | progresso = floor((paramNum / numParams)*100); |
| | dlgStatus[FrameBox(1)] << Aggiungi Graphics Script({Fill Color("blue"),Rect(0,1,progress,0,1)}); //aggiorna i progressi |
| | attendere(0.001); |
);
Non sono sicuro di aver bisogno della funzione "pavimento", ma nel mio caso non fa male.
Ri: Indicatore di avanzamento dello script JMPPuoi eliminare gli assi con questi comandi:
dlg_gb[AxisBox( 2 )] << Delete;
dlg_gb[AxisBox( 1 )] << Delete;
Metti queste due righe appena prima della prima dlgStatus[FrameBox(1)]... comando.