Indicateur de progression du script JMP<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut,
Avec quelques recherches sur ce forum et en fouillant dans le livre de scripts JMP, j'ai réussi à faire fonctionner mon script de progression.La seule chose que je n'aime pas, c'est que l'axe vertical (y) comporte des chiffres. Puis-je les désactiver ? Je n'ai pas pu trouver un moyen de le faire.Je ne sais pas si je devrais utiliser autre chose qu'une boîte de graphique (), mais ma connaissance de cela est assez limitée.
dlgStatus = nouvelle fenêtre("Avancement de la conversion",
dlg_gb = boîte graphique(
Titre ("Progrès de la conversion"),
Taille de trame ( 200, 30),
xéchelle(0,100),
yscale(0, 1), // <---- comment désactiver pour ne pas voir les valeurs de l'axe y ?
yaxis (afficher les graduations principales (0), afficher les graduations mineures (0)),
xname("% complet"),
nom("")
)
);
dlgStatus[FrameBox(1)] << Ajouter un script graphique({Couleur de remplissage("bleu"),Rect(0,1,50,0,1)}); // 50 % sur une échelle à 100 % indiquée dans l'échelle x ci-dessus. n'est pas mis à l'échelle en fonction du nombre de pixels dans la taille du cadre()
dlgStatus[FrameBox(1)] << Ajouter un script graphique({Couleur de remplissage("bleu"),Rect(0,1,75,0,1)}); // 75 % sur une échelle à 100 % indiquée dans l'échelle x ci-dessus.
// ci-dessus n'est qu'un test.les 50 et 75 seraient une variable d'index de boucle divisée par le nombre de boucles, dans mon vrai script. Il serait exécuté une fois dans chaque itération de boucle.
dlgStatus << closewindow();
Merci.
Re : Indicateur de progression du script JMPSi votre script exécute une seule boucle, vous pouvez utiliser l'exemple de SDF1 et simplement mettre à jour la variable prog tout au long. Pour gagner du temps et ne pas mettre à jour chaque itération, je mets à jour tous les 10 ou 50 (je ne me souviens pas exactement) en utilisant une fonction mod() de la variable d'itération. JMP a peut-être amélioré cela au cours des 11 dernières années depuis que j'ai créé le code, mais au départ, il a ralenti le script pour mettre à jour la barre à chaque itération, tout en itérant sur quelques centaines à quelques milliers de colonnes.
Si votre script ne tourne pas en boucle, mais exécute plusieurs opérations, vous devrez peut-être simplement mettre à jour la barre de progression tout au long du script. Par exemple si vous avez 10 opérations qui prennent 30s chacune, incrémentez de 10% la progression à chaque étape. Il s'agirait d'un processus manuel de votre part pour déterminer le temps d'exécution de chaque section de code.
S'il y a une combinaison de ce qui précède, vous pouvez faire preuve de créativité, mais dans tous les cas, il vous appartiendra de déterminer comment le temps d'exécution est distribué dans votre script, puis de tracer la progression en conséquence. JMP ne le fera pas automatiquement, vous devez scripter le code pour mettre à jour la barre en fonction de la progression.
Tout cela suppose que même s'il existe des ordinateurs plus rapides et plus lents, chaque morceau de code prendra une quantité relativement proportionnelle de temps d'exécution total pour s'exécuter, ce qui est assez raisonnable.
Re : Indicateur de progression du script JMPVeuillez poser une question, lorsque mon programme s'exécute pendant une longue période, environ 5 minutes, et que le temps s'exécute différemment sur différents ordinateurs, comment puis-je créer une barre de progression correspondante basée sur le temps d'attente réel ?
Re : Indicateur de progression du script JMPje pense que @pmroz offre une solution directe simple et sûre dans ce cas. Sachez cependant que l'utilisation du message << Supprimer pour supprimer un objet boîte d'affichage de l'arborescence d'affichage peut être dangereuse dans d'autres cas. Il existe au moins deux autres approches pour cette raison. En général, vous pouvez modifier la visibilité d'une zone d'affichage avec le message << Visibilité(). Utilisez l'argument Collapse dans ce cas. L'autre est un protocole unique pour l'objet Axis Box. Voir des exemples ici :
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 : Indicateur de progression du script JMPSalut @mikedriscoll et @pmroz ,
Je suis récemment tombé sur ce post car je voulais générer une fenêtre de progression similaire qui donnait en fait le numéro d'itération X sur Y dans une longue modélisation. Quoi qu'il en soit, j'ai pris votre solution et l'ai modifiée et ajoutée à celle sur laquelle je travaillais ici ., alors maintenant j'ai à la fois la barre de progression et les chiffres réels. Je l'aime bien. Je devrai probablement le modifier pour les préférences de mon utilisateur, mais c'est un bon début. Merci d'avoir lancé cette discussion !
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
Re : Indicateur de progression du script JMPMerci, cela a parfaitement fonctionné.
Le (1) s'est débarrassé de mon axe y. J'ai laissé le (2) en place pour montrer %.
J'ai aussi trouvé que j'avais besoin d'un peu d'attente (plus qu'une attente (0);) pour mettre à jour le graphique... voici la fin de ma boucle où je mets à jour la boîte de graphique :
| | progress = floor((paramNum / numParams)*100); |
| | dlgStatus[FrameBox(1)] << Ajouter un script graphique({Couleur de remplissage("bleu"),Rect(0,1,progress,0,1)}); //Progression de la mise à jour |
| | attendre(0.001); |
);
Je ne sais pas si j'avais besoin de la fonction "plancher" mais cela ne fait pas de mal dans mon cas.
Re : Indicateur de progression du script JMPVous pouvez vous débarrasser des axes avec ces commandes :
dlg_gb[AxisBox( 2 )] << Delete;
dlg_gb[AxisBox( 1 )] << Delete;
Mettez ces deux lignes juste avant la première dlgStatus[FrameBox(1)]... commande.