如何編寫腳本將圖表和分析數據發送到期刊,而無需手動運行現有的圖表/分析腳本?你好,
我有一堆腳本,用於分析 JMP 中的產品測試數據。
腳本通常調用測試數據文件中的多個列。
每個測試運行都由一個 ID 標記,只有該 ID 發生變化才能將新的測試運行數據拉入 JMP - 用於數據分析的腳本保持不變。
為了分享我的分析,我(目前)手動創建了一個包含圖表和分析數據(例如中位數和標準差等)的 PPT 幻燈片包。
我想轉到 JMP 期刊。
我想知道是否有可能有一個腳本(通過自動或不運行我的其他分析腳本)將圖表和分析數據發送到 JMP 日誌? 如果可能的話,我能否獲得一些有關示例腳本的幫助來整理這樣的日記?
謝謝。
自動化和腳本編寫視窗回复:如何編寫腳本將圖表和分析數據發送到期刊,而無需手動運行現有的圖表/分析腳本?@ian_jmp - 我分解了您建議的代碼以找出不起作用的內容。 看來問題出在 for 循環中的行中
thisWindow = postWindowList[w];
在我的例子中,它在日誌中報告(當運行一個簡單的腳本來繪製圖表時)
"part012 - Graph Builder"
對於不在其中的第一個圖表項目
preWindowList
然後就跑
Window(thisWindow) << Journal
不把窗口稱為
"part012 - Graph Builder"
到日誌文件中。 名字有問題嗎“part012 - Graph Builder”本身由於該圖表沒有發送到期刊?
回复:如何編寫腳本將圖表和分析數據發送到期刊,而無需手動運行現有的圖表/分析腳本?@ian_jmp ,如果我嘗試以下方式,除非我註釋 for 循環(在最後),否則我不會獲得打開的圖表窗口列表(在日誌中)。
此外,不會生成日誌文件。 我哪裡犯了錯誤?
我定義一個函數(稱為 getOpenWindowNames.jsl)並執行它
Names Default To Here(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;
);然後在另一個腳本中調用上述函數
Names Default To Here(1);
//Clear Symbols();
include ("getOpenWindowNames.jsl");
// 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 循環塊。
另外,我沒有將圖表放入日誌中,因此只有看起來上面的代碼似乎可以按預期工作,除非我做錯了什麼。
回复:如何編寫腳本將圖表和分析數據發送到期刊,而無需手動運行現有的圖表/分析腳本?@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上面的腳本按預期工作。
然後(在上面的第四行),我嘗試包括您的腳本如下(請注意註釋行),用於將圖表發送到日誌,但不起作用。
我哪裡出錯了(也許是我的 include 語句或函數調用,例如輸出 =打開 Windows 的名稱() )?
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 腳本未保存在表中”。
我的腳本已保存,並且不會更改以分析新的測試數據(如我的操作中所述)。
另外,我只需要每個腳本中的特定圖表和一些計算的分析數據(例如中位數和標準偏差,而不是 JMP 也計算的其他參數)即可發送到日誌。 在JSL中如何實現這一點?
回复:如何編寫腳本將圖表和分析數據發送到期刊,而無需手動運行現有的圖表/分析腳本?如果你不想修改現有的腳本,你可以嘗試這種方法。 如果腳本未保存在表中,請查看 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);
);
回复:如何編寫腳本將圖表和分析數據發送到期刊,而無需手動運行現有的圖表/分析腳本?謝謝。 是的,這確實為我指明了一種可以遵循的方法。
但是,我注意到數據文件加載腳本和圖形繪製/分析腳本等需要寫入生成日誌的腳本中。
就我而言,我已經有單獨的腳本來加載數據、繪製必要的圖表並生成必要的分析。
我有辦法參考現有腳本從日記腳本中提取而不在日記腳本中再次寫入它們?
回复:如何編寫腳本將圖表和分析數據發送到期刊,而無需手動運行現有的圖表/分析腳本?在網絡上搜索“編寫 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>