如何在不手动运行现有图表/分析脚本的情况下编写将图表和分析数据发送到期刊的脚本?你好,
我有一堆脚本用于分析 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 外观上方的代码似乎可以按预期工作。