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

代码:
对象=新窗户( 《趋势分析报告》 ||长日期(今天()) ,
远东= V列表框()
) ;
展示=功能({过程,标签,经过,源类型, LMt1 , LMT2 , LMT3 } ,
r1 =新窗户( ”” ,
公共图书馆=面板盒( “ 控制图 ” ||过程|| “&” || “源类型=” ||源类型,当前数据表( 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 ,过程) ,欧洲气象局(平均电压( LMT3 [ 5 ]))) ,
在哪里(作为列( dt ,经过) ==源类型) ;
) ;
) ;
) ;
) ;远东<<附加( r1 ) ; r1 <<关闭窗口;
) ;
阴谋=功能({ LMTS ,路径} ,
参数_dt =打开(路径, “无形的” ) ;
参数总和=参数_dt <<概括(无形的,
团体( :通过...分组,:过程,:标签样本,:经过)) <<橱窗( 0 ) ;
为了( q = 12 , q <=行(参数总和) , q ++,当前数据表(参数总和) ;
列2 =:过程[ q ] ;第 3 列=:标签样本[ q ] ;第 4 列=:经过[ q ] ;
当前数据表( LMTS ) ;
克拉姆斯= LMTS <<获取列名称(细绳) ;
从......中去除(克拉姆斯, 1 , 3 ) ;
为了( t = 1 , t <= N 项(克拉姆斯) , t ++,当前数据表( LMTS ) ;
indv_lmts =作为列(克拉姆斯[ t ])[ LMTS <<获取行的位置( :范围==列2 & :图表类型== “个人” )] ;
cusum_lmts =作为列(克拉姆斯[ t ])[ LMTS <<获取行的位置( :范围==列2 & :图表类型== “累积和” )] ;
ewma_lmts =作为列(克拉姆斯[ t ])[ LMTS <<获取行的位置( :范围==列2 & :图表类型== “EWMA” )] ;
展示(列2 ,第 3 列,第 4 列,克拉姆斯[ t ] , indv_lmts , cusum_lmts , ewma_lmts ) ;
) ;
) ;
) ;
我无法弄清楚为什么会发生这种情况。 任何帮助,将不胜感激。 谢谢!!
感谢大卫的意见。 这似乎是一个好方法,我一定会尝试一下。
尽管同时正在寻找快速解决方案并且MPB的解决方案效果很好。
但您的方法对于最终用户来说也是不言自明的,可以很好地解释图表。
看看这个例子是否有帮助。 我修改了 Murphrey 和 Lucas 撰写的优秀 JSL 介绍 Jump into JMP Scripting 中的示例。
dt = Open( "$SAMPLE_DATA/质量控制/直径.jmp" );
cc = 控制图(
团体人数( 1 ),
克西格玛( 3 ),
图表栏(:直径,单独测量),
其中(:机器==“A386”)
);
等待(2);
(报告( cc ) << 父级)[文本框( 1 )] << 删除;
等待(2);
where 子句的文本是 JMP 的标准输出,并非特定于您的代码。例如对于这个脚本:
控制图(
团体规模( 1 ) ,
克西格玛( 3 ) ,
图表栏( :直径,单独测量) ,
在哪里( :机器== “A386” )
) ;
输出如下所示:

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

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

-戴夫