改善控制图可视化的技巧你好,
我从 JMP 数据表创建了几个控制图并将所有内容保存为报告,我想执行以下操作:
- 如何修改脚本以便仅绘制数据表中的最后 30 个数据点?
- 如何修改脚本以设置图表的正确大小? 现在每次我打开它时,图表都会被压缩在左侧
感谢您的支持!
回复:改进控制图可视化的技巧您将需要添加代码来隐藏和排除图表上的第一个数据点...如果您重新运行执行隐藏和排除的脚本,它将根据增加的数据使用新的 dt << N Rows() 计算行数。回复:改进控制图可视化的技巧非常感谢,现在脚本在轴设置方面可以按预期工作。
我认为我需要的最后一步如下:
通常我们将数据表嵌入到 JMP 报告中,因此在数据上添加新的数据行,图表会自动更新为新值,我注意到“最后 30 个数据点”并未以 1 新值、1 的方式滚动旧值较小,但标绘点的数量每天都在增加 1。
有什么我可以做的吗?
回复:改进控制图可视化的技巧哎呀......有几个错误。
需要有一个“;”在 dt << 之后选择清除;
您使用的图表需要引用 AxisBox(2),而不是 AxisBox(1);
dt = current data table();
// Hide and Exclude all rows except the last 30
dt << select where(Row() < N Rows( dt ) - 29 );
dt << Hide and Exclude;
// Unselect the rows
dt << clear select;
cc = Control Chart(
Sample Label( :Data ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Si STD 3 ppb, Individual Measurement( Avg( 3 ), LCL( 2.25 ), UCL( 3.75 ) ) ),
SendToReport(
Dispatch(
{"Individual Measurement of Si STD 3 ppb"},
"IR Chart of IM",
FrameBox,
{Frame Size( 1301, 208 )}
)
)
);
// Set the axis parameters
report(cc)[AxisBox(2)]<<MIN></MIN>回复:改进控制图可视化的技巧所以我使用的脚本如下:
dt = current data table();
// Hide and Exclude all rows except the last 30
dt << select where(Row() < N Rows( dt ) - 29 );
dt << Hide and Exclude;
// Unselect the rows
dt << clear select
cc = Control Chart(
Sample Label( :Data ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Si STD 3 ppb, Individual Measurement( Avg( 3 ), LCL( 2.25 ), UCL( 3.75 ) ) ),
SendToReport(
Dispatch(
{"Individual Measurement of Si STD 3 ppb"},
"IR Chart of IM",
FrameBox,
{Frame Size( 1301, 208 )}
)
)
);
// Set the axis parameters
report(cc)[AxisBox(1)]<<MIN></MIN>关于第一个要点,我们对代码大喊大叫,我得到了这个

对于第2点和第3点,我该如何检查?
回复:改进控制图可视化的技巧线路
report(cc)[AxisBox(1)]<<MIN></MIN>
显然没有找到它需要更改的 AxisBox() 。
- 我在 12 月 13 日 3:23(我的时间)中包含的示例工作正常吗?
- 变量“dt”是否被分配为指向目标数据表?
- “cc”是否指向控制图平台
cc = Control Chart(
能够查看您正在使用的实际代码将会有所帮助。您能提供该代码吗?
回复:改进控制图可视化的技巧你好,
该脚本工作正常,可以选择最后 30 个数据点,但我认为在设置 X 轴上的最小值和最大值时遇到问题,如下图所示:

回复:改进控制图可视化的技巧尝试这个
dt = current data table();
// Hide and Exclude all rows except the last 30
dt << select where(Row() < N Rows( dt ) - 29 );
dt << Hide and Exclude;
// Unselect the rows
dt << clear select
cc = Control Chart(
Sample Label( :Data ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Si STD 3 ppb, Individual Measurement( Avg( 3 ), LCL( 2.25 ), UCL( 3.75 ) ) ),
SendToReport(
Dispatch(
{"Individual Measurement of Si STD 3 ppb"},
"IR Chart of IM",
FrameBox,
{Frame Size( 1301, 208 )}
)
)
);
// Set the axis parameters
report(cc)[AxisBox(1)]<<MIN></MIN>
为了让您更好地了解 JMP 脚本编写世界,我强烈建议您阅读脚本指南。
帮助==>书籍==>脚本指南
如果您一般不熟悉计算机编程,我建议您在网上搜索“免费在线编程简介”。
回复:改进控制图可视化的技巧你好,
所以我尝试遵循您的提示,下面是我从数据表创建单独控制图后得到的脚本:
Control Chart(
Sample Label( :Data ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Si STD 3 ppb, Individual Measurement( Avg( 3 ), LCL( 2.25 ), UCL( 3.75 ) ) ),
SendToReport( Dispatch( {"Individual Measurement of Si STD 3 ppb"}, "IR Chart of IM", FrameBox, {Frame Size( 1301, 208 )} ) )
);
我应该将代码粘贴到哪里?
抱歉,我确实是脚本编写的初学者。
谢谢。
回复:改进控制图可视化的技巧我建议的第一个选项不需要子集化!请参阅下面的脚本
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
// Hide and Exclude all rows except the last 30
dt << select where(Row() < N Rows( dt ) - 29 );
dt << Hide and Exclude;
// Unselect the rows
dt << clear select
// Run the control chart
cc = Control Chart Builder(
Variables( Y( :NPN1 ) ),
Chart( Position( 1 ), Limits( Sigma( "Moving Range" ) ) ),
Chart( Position( 2 ), Limits( Sigma( "Moving Range" ) ) )
);
// Set the axis parameters
report(cc)[AxisBox(1)]<<MIN></MIN>回复:改进控制图可视化的技巧你好,特克斯尼尔森,
感谢您的建议,不幸的是,我想做的是在脚本中编写一些代码,自动从数据表中仅获取最后 30 个数据点,而不创建当前数据表的子集。
谢谢。
回复:改进控制图可视化的技巧有几种方法可以做到这一点。
- 选择 Row() < N Rows(dt)-30 的所有行,然后隐藏并排除它们
- 通过选择 Row() >= N Rows(dt)-30 的所有行来创建最后一个的子集,然后使用 Tables==>Subset 创建新数据表,并针对新数据表运行图表生成器
除非您在脚本中手动更改了图表大小,否则 JMP 将使用首选项中的默认图表大小。我的建议是您以交互方式运行图表。然后手动将图表大小更改为您想要的大小,然后转到红色小三角并选择“保存脚本”。它将在其生成的脚本中嵌入脚本代码,以便在运行时更改图表大小。