<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我在一个窗口中绘制三个不同的图表(IR、EWMA 和 CUSUM),但我面临的问题是它也在显示窗口上显示图表中使用的 where 条件。
展示窗:

代码:
对象=新窗户( 《趋势分析报告》 ||长日期(今天()) ,
vlb = V列表框()
) ;
展示=功能({过程,标签,经过,源类型, lmt1 , lmt2 , lmt3 } ,
r1 =新窗户( “” ,
plb =面板盒( " 控制图 " ||过程|| “&” || “源类型=” ||源类型,当前数据表( dt ) ;
H 列表框(
控制图(
样品标签(柱子( dt ,标签)) ,
组大小( 1 ) ,克西格玛( 3 ) ,
作为列( dt ,过程) ,个人测量(拼箱( lmt1 [ 6 ]) ,平均( lmt1 [ 5 ]) ,伦敦大学学院( lmt1 [ 7 ]))) ,
在哪里(作为列( dt ,经过) ==源类型) ;
) ;
样品标签(柱子( dt ,标签)) ,
样本量( 1 ) ,
Α ( 0.00269979606326021 ) ,
显示限制图例( 0 ) ,
作为列( dt ,过程) ,中和(双面( 1 ) ,平均( lmt2 [ 5 ]))) ,
在哪里(作为列( dt ,经过) ==源类型) ;
) ;
样品标签(柱子( dt ,标签)) ,
样本量( 1 ) ,
克西格玛( 3 ) ,重量( 0.2 ) ,
作为列( dt ,过程) , EWMA (平均( lmt3 [ 5 ]))) ,
在哪里(作为列( dt ,经过) ==源类型) ;
) ;
) ;
) ;
) ; vlb <<附加( r1 ) ; r1 <<关闭窗口;
) ;
阴谋=功能({ lmts , pmt_path } ,
param_dt =打开( pmt_path , “无形的” ) ;
参数和= param_dt <<概括(无形的,
团体( :通过...分组,:过程,:样品标签,:经过)) <<橱窗( 0 ) ;
为了( q = 12 , q <= N行(参数和) , q ++,当前数据表(参数和) ;
col2 =:过程[ q ] ; col3 =:样品标签[ q ] ; col4 =:经过[ q ] ;
当前数据表( lmts ) ;
clms = lmts <<获取列名(细绳) ;
从...除去( clms , 1 , 3 ) ;
为了(吨= 1 ,吨<= N 项( clms ) ,吨++,当前数据表( lmts ) ;
indv_lmts =作为列( clms [吨])[ lmts <<在哪里获取行( :范围== col2 & :图表类型== “个人” )] ;
cusum_lmts =作为列( clms [吨])[ lmts <<在哪里获取行( :范围== col2 & :图表类型== “CUSUM” )] ;
ewma_lmts =作为列( clms [吨])[ lmts <<在哪里获取行( :范围== col2 & :图表类型== “EWMA” )] ;
展示( col2 , col3 , col4 , clms [吨] , indv_lmts , cusum_lmts , ewma_lmts ) ;
) ;
) ;
) ;
我无法弄清楚为什么会这样。 任何帮助,将不胜感激。 谢谢!!
感谢您输入大卫。 这似乎是一个很好的方法,肯定会尝试一下。
虽然在此期间正在寻找快速解决方案并且mpb的解决方案效果很好。
但是您的方法对于最终用户很好地解释图表也是不言自明的。
看看这个例子是否有帮助。 我修改了 Murphrey 和 Lucas 编写的优秀 JSL 介绍 Jump into JMP Scripting 中的一个示例。
dt = Open("$SAMPLE_DATA/质量控制/Diameter.jmp");
cc = 控制图(
组大小(1),
千西格玛(3),
图表 Col(:DIAMETER, 单独测量),
哪里(:机器==“A386”)
);
等待(2);
(报告(cc)<<父)[文本框(1)]<<删除;
等待(2);
where 子句的文本是 JMP 的标准输出,并不特定于您的代码。例如对于这个脚本:
控制图(
组大小( 1 ) ,
克西格玛( 3 ) ,
图表栏( :直径,个人测量) ,
在哪里( :机器== “A386” )
) ;
输出如下所示:

不幸的是,此文本似乎没有出现在显示树中,因此无法轻松删除。我采用的方法是为每个图表创建数据子集,这样就不需要 where 子句。如果我正在编写一个包含多个图表的窗口,那么标题为“控制图表”并不会添加任何有用的信息,因此我将此文本替换为用于子集数据的选择子句:

这是完整的脚本:
dt =打开( "$SAMPLE_DATA/质量控制/Diameter.jmp" ) ;
// 用于 'where' 子句的列名
团队名字= “机器” ;
// 在关闭窗口事件之后需要这个来做家务
ns =新命名空间( “要删除的临时表” ) ;
// 获取机器的唯一值
总结(水平=经过( AsColumn (团队名字) ) ) ;
西北=新窗户( “我的图表” ,
体重秤= H 列表框()
) ;
// 遍历每个值
ns :列表= {} ;
为了(一世= 1 ,一世<= N项(水平) ,一世++,
// 创建数据子集
匹配行= dt <<在哪里获取行( AsColumn (团队名字) ==水平[一世] ) ;
名称= “子集” ||团队名字|| “=” ||水平[一世] ;
dt子集= dt <<子集(行(匹配行) ,输出表(名称) ,无形的) ;
// 添加到命名空间以供关闭事件引用
插入( ns :列表, dt子集) ;
// 使用容器确保图表在附加到窗口之前不会呈现
容器= V 列表框(
抄送= dt子集<<控制图(
组大小( 1 ) ,
克西格玛( 3 ) ,
图表栏( :直径,个人测量) ,
)
) ;
// 修改标题
代表=抄送<<报告;
ob =代表[大纲框( 1 )] ;
ob <<设置标题(团队名字|| “=” ||水平[一世]) ;
// 附加到报告窗口
体重秤<<附加(容器)
) ;
// 内务处理 - 删除子集表
西北<<关闭时(
ns =命名空间( “要删除的临时表” ) ;
为了(一世= 1 ,一世<= N项( ns :列表) ,一世++,
尝试(关( ns :列表[一世] ,不保存) )
)
) ;
以及相关的输出:

-戴夫