JMP スクリプトの進行状況インジケーター<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />やあ、
このフォーラムで検索したり、JMP スクリプトの本を調べたりして、進行中のスクリプトをほぼ機能させることができました。唯一気に入らないのは、垂直 (y) 軸に数字が付いていることです。 これらをオフにできますか? これを行う方法が見つかりませんでした。グラフ box() 以外のものを使用する必要があるかどうかはわかりませんが、これに関する私の知識はかなり限られています。
dlgStatus = new window("変換の進行状況",
dlg_gb = グラフボックス(
タイトル (「変換の進行状況」)、
フレームサイズ (200、30)、
xscale(0,100)、
yscale(0, 1), // <---- y 軸の値が表示されないようにオフにするにはどうすればよいですか?
yaxis (主目盛り (0) を表示、副目盛り (0) を表示)、
xname("% 完了"),
yname("")
)
);
dlgStatus[FrameBox(1)] << グラフィックス スクリプトを追加({Fill Color("blue"),Rect(0,1,50,0,1)}); // 上の xscale に示されているように、スケール上の 50% から 100% までです。 Frame size() でピクセル数に合わせてスケーリングされません。
dlgStatus[FrameBox(1)] << グラフィックス スクリプトを追加({Fill Color("blue"),Rect(0,1,75,0,1)}); // 上記の xscale に示されている 100% までのスケールで 75%。
// 上記は単なるテストです。実際のスクリプトでは、50 と 75 はループ インデックス変数をループ数で割ったものになります。 これは、ループの繰り返しごとに 1 回実行されます。
dlgStatus << closewindow();
ありがとう。
Re: JMP スクリプトの進行状況インジケータースクリプトが単一ループを実行する場合は、SDF1 の例を使用して、全体を通して prog 変数を更新するだけです。 時間を節約し、反復ごとに更新するのではなく、反復変数の mod() 関数を使用して 10 または 50 ごとに更新します (正確には覚えていません)。 JMP は、私がコードを作成して以来 11 年間でこれを改善した可能性がありますが、当初は、数百から数千の列を反復する際に、反復ごとにバーを更新するためにスクリプトの速度が低下していました。
スクリプトがループしておらず、いくつかの操作を頻繁に実行している場合は、スクリプト全体で進行状況バーを更新するだけでよい場合があります。 たとえば、それぞれ 30 秒かかる操作が 10 件ある場合、各ステップの進行状況を 10% ずつ増やします。 これは、コードの各セクションの実行にどれくらいの時間がかかっているかを判断するための手動プロセスになります。
上記の組み合わせがある場合は、創造性を発揮することもできますが、いずれにしても、スクリプト内で実行時間がどのように配分されるかを把握し、それに応じて進行状況をプロットするのはユーザー次第です。 JMP はこれを自動的に実行しません。進行状況に基づいてバーを更新するコードをスクリプト化する必要があります。
これはすべて、より高速なコンピューターとより低速なコンピューターが存在するにもかかわらず、コードの各チャンクの実行にかかる合計実行時間は比較的比例した量であることを前提としていますが、これはかなり合理的です。
Re: JMP スクリプトの進行状況インジケーター質問してください。プログラムが約 5 分間という長時間実行され、コンピューターによって実行時間が異なる場合、実際の実行待機時間に基づいて対応する進行状況バーを作成するにはどうすればよいですか?
Re: JMP スクリプトの進行状況インジケーター私はそう思います@pmrozこの場合に安全な単純な直接的な解決策を提供します。 ただし、<< Delete メッセージを使用して表示ツリーから表示ボックス オブジェクトを削除することは、他の場合には危険である可能性があることに注意してください。 この理由のために、他に少なくとも 2 つのアプローチがあります。 一般に、<< Visibility() メッセージを使用して表示ボックスの可視性を変更できます。 この場合は、Collapse 引数を使用します。 もう 1 つは、Axis Box オブジェクトの独自のプロトコルです。 ここで例を参照してください。
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: JMP スクリプトの進行状況インジケーターやあ@mikedriscollと@pmroz 、
私は最近、長いモデリング実行で実際に反復回数 Y のうち X を与える同様の進行状況ウィンドウを生成したいと考えていたときに、この投稿を見つけました。 とにかく、私はあなたの解決策を採用して修正し、私が取り組んでいた解決策に追加しましたここ. これで、進行状況バーと実際の数値の両方が表示されます。 それはいいですね。 おそらくユーザーの好みに合わせて変更する必要がありますが、素晴らしいスタートです。 このディスカッションを開始していただきありがとうございます。
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: JMP スクリプトの進行状況インジケーターありがとう、それは完璧に機能しました。
(1) では y 軸が削除されました。 (2) は%を表示するためにそのままにしました。
また、グラフィックを更新するには少し待機する必要があることもわかりました (wait(0); 以上)。グラフ ボックスを更新するループの終わりは次のとおりです。
| | 進行状況 = Floor((paramNum / numParams)*100); |
| | dlgStatus[FrameBox(1)] << グラフィックス スクリプトを追加({Fill Color("blue"),Rect(0,1,progress,0,1)}); // 更新の進行状況 |
| | 待機(0.001); |
);
「フロア」機能が必要かどうかはわかりませんが、私の場合は問題ありません。
Re: JMP スクリプトの進行状況インジケーター次のコマンドを使用して軸を削除できます。
dlg_gb[AxisBox( 2 )] << Delete;
dlg_gb[AxisBox( 1 )] << Delete;
これらの 2 行を最初の行の直前に置きますdlgStatus[フレームボックス(1)]...指図。