如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?你好,
我有一堆腳本用於分析 JMP 中的產品測試數據。
腳本通常調用測試數據文件中的多個列。
每個測試運行都由一個 ID 標記,只有這個 ID 發生變化才能將新的測試運行數據拉入 JMP - 用於數據分析的腳本保持不變。
為了分享我的分析,我(目前)手動創建了一個帶有圖表和分析數據(例如中值和標準偏差等)的 PPT 幻燈片包。
我想轉投 JMP 期刊。
我想知道是否有可能有一個腳本(通過自動或不運行我的其他分析腳本)將圖表和分析數據發送到 JMP 期刊? 如果這是可能的,我能否獲得一些示例腳本的幫助以將這樣的日誌放在一起?
謝謝。
圖形腳本編寫視窗回复:如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?在網絡上搜索“為 JMP 期刊編寫腳本”將為您提供更多示例,但這可能會讓您指向正確的方向:
Names default to here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
// New Journal with a couple headings
nw = New Window("My Journal", <<JOURNAL></JOURNAL>回复:如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?謝謝。 是的,這確實指出了我可以遵循的方法。
但是,我注意到數據文件加載腳本和圖形繪製/分析腳本等需要寫入腳本中以生成日誌。
就我而言,我已經有單獨的腳本來加載數據、繪製必要的圖形並生成必要的分析。
我有辦法參考現有腳本從日誌腳本中而不在日誌腳本中再次寫入它們?
回复:如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?如果您不想修改現有腳本,可以嘗試這種方法。 如果腳本未保存在表中,請查看 JSL 的“Include()”函數:
NamesDefaultToHere(1);
// Returns a list containing the names of all the currently open windows in a session
namesOfOpenWindows =
Function({}, {DefaultLocal},
openWindows = Window();
openWindowNames = {};
For(w=1, w<=NItems(openWindows), w++, InsertInto(OpenWindowNames, OpenWindows[w] << GetWindowTitle));
openWindowNames;
);
// Which windows are open now?
preWindowList = namesOfOpenWindows();
// Open a table
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Find out what scripts are in the table
dts = dt << GetTableScriptNames;
// Run every script
for (s=1, s<=NItems(dts), s++, dt << runScript(dts[s]));
// Which windows are open now?
postWindowList = namesOfOpenWindows();
// Journal the contents of each 'new' window
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
回复:如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?謝謝@ian_jmp .
您的腳本看起來非常有用,特別是因為我對 JMP 比較陌生(來自 MATLAB)。
但是,我不明白您對“我f 腳本未保存在表中”。
我的腳本已保存,不會因分析新測試數據而更改(如我的 OP 中所述)。
另外,我只需要每個腳本的特定圖表和一些計算的分析數據(例如中值和標準偏差,而不是 JMP 也計算的其他參數)才能轉到期刊。 如何在 JSL 中實現這一點?
回复:如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?從輸出中選擇特定報告相當簡單,但非常具體。我建議您花時間閱讀腳本指南以開始使用。然後,您關於如何獲得精確報告的具體問題將由文檔回答,或者您將能夠提供更詳細的問題供社區回答。
回复:如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?@ian_jmp . 我正在嘗試以下列方式使用您的腳本。
我編寫了一個腳本來加載數據文件並繪製各種圖表。
partID = "part012"; // specifies part ID
DataTable = getDataTable4WfrID2(partID,partID); // loads test data table corresponding to the partID and names it the same as partID
include ("allGraphPlotter.jsl"); //plots all necessary charts上面的腳本按預期工作。
然後(在上面的第四行),我試圖包括您的腳本如下(注意註釋行),用於將圖表發送到日誌但不起作用。
我哪裡出錯了(也許是我的包含語句或函數調用,例如 output = namesOfOpenWindows() )?
NamesDefaultToHere(1);
// Returns a list containing the names of all the currently open windows in a session
namesOfOpenWindows =
Function({}, {DefaultLocal},
openWindows = Window();
openWindowNames = {};
For(w=1, w<=NItems(openWindows), w++, InsertInto(OpenWindowNames, OpenWindows[w] << GetWindowTitle));
openWindowNames;
);
// Which windows are open now?
preWindowList = namesOfOpenWindows();
// Open a table
//dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Find out what scripts are in the table
//dts = dt << GetTableScriptNames;
// Run every script
//for (s=1, s<=NItems(dts), s++, dt << runScript(dts[s]));
// Which windows are open now?
postWindowList = namesOfOpenWindows();
// Journal the contents of each 'new' window
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
回复:如何在不手動運行現有圖表/分析腳本的情況下編寫將圖表和分析數據發送到期刊的腳本?@ian_jmp . 我現在又做了一些測試。 腳本的這部分不起作用。
for(w=1, w<=NItems(postWindowList), w++,
thisWindow = postWindowList[w];
if (!Contains(preWindowList, thisWindow), Window(thisWindow) << Journal);
);
腳本中高於此的所有內容都給出了預期的結果,但前提是我對上述 for 循環塊進行了註釋。
此外,我沒有將圖表放入日誌中,因此除非我做錯了什麼,否則只有 for 外觀上方的代碼似乎可以按預期工作。