JMP 腳本進度指示器<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
通過在這個論壇上進行一些搜索並深入研究 JMP 腳本編寫書籍,我已經成功地使我的進度腳本基本正常工作。我唯一不喜歡的是垂直(y)軸上有數字。 我可以把它們關掉嗎? 我無法找到一種方法來做到這一點。不確定我是否應該使用圖形框()以外的東西,但我對此的了解相當有限。
dlgStatus = new window("轉換進度",
dlg_gb = 圖形框(
標題(“轉換進度”),
幀大小 ( 200, 30),
xscale(0,100),
yscale(0, 1), // <---- 如何關閉以便看不到 y 軸值?
yaxis(顯示主要刻度(0),顯示次要刻度(0)),
xname("完成%"),
名字("")
)
);
dlgStatus[FrameBox(1)] << 添加圖形腳本({填充顏色("藍色"),矩形(0,1,50,0,1)}); // 50% 到 100% 的比例如上面的 xscale 所示。不會縮放到幀大小()中的像素數
dlgStatus[FrameBox(1)] << 添加圖形腳本({填充顏色("藍色"),矩形(0,1,75,0,1)}); // 75% 到 100% 的比例如上面的 xscale 所示。
// 上面只是一個測試。在我的真實腳本中,50 和 75 將是循環索引變量除以循環計數。 它會在每個循環迭代中執行一次。
dlgStatus << 關閉窗口();
謝謝。
回复:JMP 腳本進度指示器如果您的腳本運行單個循環,您可以使用 SDF1 的示例並僅更新整個 prog 變量。 為了節省時間而不是每次迭代都更新,我使用迭代變量的 mod() 函數每 10 次或 50 次(記不太清楚)更新一次。 自從我創建代碼以來,JMP 可能在過去 11 年裡對此進行了改進,但最初它減慢了腳本速度,每次迭代都會更新條形圖,同時迭代數百到數千列。
如果您的腳本沒有循環,而是執行多個操作,您可能只需要更新整個腳本中的進度條。 例如,如果您有 10 個操作,每個操作需要 30 秒,則每一步增加 10% 的進度。 這將是您的手動過程,用於確定每個代碼部分的執行時間。
如果有上述的某種組合,您可以發揮創意,但無論哪種方式,您都需要弄清楚執行時間在腳本中的分佈情況,然後相應地繪製進度。 JMP 不會自動執行此操作,您需要編寫代碼以根據進度更新條形圖。
這一切都假設即使有更快和更慢的計算機,每個代碼塊將花費相對比例的總執行時間來執行,這是相當合理的。
回复:JMP 腳本進度指示器請教一個問題,當我的程序運行時間較長,大約5分鐘左右,並且不同電腦上運行的時間不同時,如何根據實際運行等待時間製作相應的進度條?
回复:JMP 腳本進度指示器我覺得@pmroz提供了一種在這種情況下安全的簡單直接解決方案。 但請注意,在其他情況下,使用 << 刪除消息從顯示樹中刪除顯示框對象可能會很危險。 為此,至少有兩種其他方法。 通常,您可以使用 << Visibility() 消息修改顯示框的可見性。 在這種情況下使用 Collapse 參數。 另一個是 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 );
回复: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
回复:JMP 腳本進度指示器謝謝,效果很好。
(1) 去掉了我的 y 軸。 我將 (2) 保留在原處以顯示 %。
我還發現我需要一點等待(不僅僅是 wait(0);)來更新圖形...這是我更新圖形框的循環的結尾:
| | 進度 = 樓層((paramNum / numParams)*100); |
| | dlgStatus[FrameBox(1)] << 添加圖形腳本({填充顏色("藍色"),矩形(0,1,進度,0,1)}); //更新進度 |
| | 等待(0.001); |
);
不確定我是否需要“地板”功能,但它對我來說並沒有什麼壞處。
回复:JMP 腳本進度指示器您可以使用以下命令刪除軸:
dlg_gb[AxisBox( 2 )] << Delete;
dlg_gb[AxisBox( 1 )] << Delete;
將這兩行放在第一行之前dlgStatus[FrameBox(1)]...命令。