使用 JSL 建立大量圖形時,JMP 會逐漸停止我正在編寫一個腳本,它可以創建許多圖表,確定每個圖表的回歸適合度,然後將所有回歸係數保存到一個表中。該腳本可以執行我想要的操作,但隨著需要計算的列數增加,它會突然停止運行。即使我嘗試在循環中關閉它們,該腳本似乎仍會在後台保留在 For 循環中創建的圖表和生成的面板(一旦將圖表發送到期刊(用於 PDF 導出)並提取了回歸係數,我就不需要單獨的圖表或表格框數據了)。
當我使用調試器單步執行腳本時,腳本運行到最後並沒有顯示單獨的窗口,但當我停止調試器(紅色方塊)時,for 循環中的所有單獨窗口都會被創建。腳本迭代了 600 列,在背景建立的相應數量的視窗(設定為不可見)會隨著時間的推移導致 jmp 函數逐漸停止。
當使用腳本遍歷資料集以執行某些分析或產生許多圖表時,如何最好地關閉已建立的「中間」視窗、圖表等,以最大限度地減少產生的記憶體負擔?
以下是我遍歷各列的腳本的部分片段。
For( i = 7, i <=ncols, i++,
biv = dt << Bivariate(
Y(Column(colList[i]) ),
X( :Temperature ),
Fit Line( {Line Color( "Medium Dark Red" )} ), invisible);
rbiv = biv << Report;
biv << Close;
rbiv[Frame Box( 1 )] << Frame Size( 550, 400 );
rbiv << Page Break;
rbiv << Journal;
dtx= Report( biv )["Parameter Estimates"][Table Box( 1 )] << make combined data table;
// dty= Report( biv )["Lack Of Fit"][Table Box( 1 )] << make combined data table;
dtSlope << Concatenate(dtx ,"Append to first table");
// dtFit << Concatenate(dty ,dtSlope, "Append to first table");
// Close(dty, NoSave);
Close(dtx, NoSave);
);
自動化和腳本回覆:使用 JSL 建立大量圖形時,JMP 速度會逐漸減慢直到停止我認為您需要將突出顯示的行更改為:“rbiv << Close Window;”並將其向下移動到不再需要它的位置,例如箭頭指向的位置。

“rbiv << Close Window;”表示要關閉報表視窗。

令我驚訝的是,「biv << Close Window;」也能正常運作。但我不會建議這樣做,至少因為這種行為沒有記錄在案。
回覆:使用 JSL 建立大量圖形時,JMP 速度會逐漸減慢直到停止除了確保這些視窗正確關閉之外,根據你的 JMP 版本,你可能還想在雙變量訊息中添加“Invisible”或“Private”,並製作組合資料表
Names Default To Here(1);
cols = {"height", "weight"};
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt_res = Empty();
For Each({colname}, cols,
// You can also use Private, it is generally faster but more dificult to debug and utilize
biv = dt << Bivariate(Y(Eval(colname)), X(:weight), Fit Line({Line Color({230, 159, 0})}), Invisible);
// this can also be made invisible/private
dt_biv = Report(biv)["Parameter Estimates"][Table Box(1)] << make combined data table(Invisible);
biv << close window;
dt_biv << Delete Scripts(dt_biv << Get Table Script Names);
// wait(0); // wait(0) isn't usually not necessary
If(Is Empty(dt_res),
dt_res = dt_biv;
dt_res << Set Name("Biv Parameter Estimates");
,
dt_res << Concatenate(
dt_biv,
"Append To First Table"
);
Close(dt_biv, no save);
);
);
dt_res << show window; // use result
回覆:使用 JSL 建立大量圖形時,JMP 速度會逐漸減慢直到停止謝謝。這兩個解決方案/建議都有幫助,但原因不同。
是的,錯誤似乎是我錯誤地使用了biv << Close指令,而不是biv << Close Window 指令。 Close指令沒有產生任何錯誤,也沒有顯示任何內容(因此導致了我的問題)。這可能是 JSL中令人沮喪的問題之一。在許多情況下,不正確或不合適的命令或參數不會產生錯誤,只是默默地不執行任何操作。這使得很難排除故障,不知道問題出在腳本本身還是命令使用不當。
一旦我更改為正確的關閉命令,腳本中的錯誤位置就變得明顯,因為它會產生錯誤,因為我仍然需要它來獲取參數估計。
真的很感謝你的幫忙....
回覆:使用 JSL 建立大量圖形時,JMP 速度會逐漸減慢直到停止您需要完整的雙變量擬合報告嗎?還是您只需要參數估計值(斜率和截距,以及相關的標準誤差和t比)?如果是後者,您是否嘗試過使用“擬合曲線”而不是“以X擬合Y”?根據我的經驗,「擬合曲線」速度更快,並且更容易處理大量曲線。