<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我试图绘制三个控制图(IR,EWMA和CUSUM),但由于一些奇怪的原因,图表窗口显示空白。当尝试使用JMP接口时,它可以完美地绘制图表。
一个有趣的事实是,在第一次运行以生成限制时执行下面提到的第三步时会填充相同的图表,但是当实际需要限制时,即使当前应用的限制是从同一个表计算的,也不会。
这就是我的代码流的工作原理:
- >获取输入文件
- >加入他们创建主表
- >计算限制并在另一个表中存储所有过程参数。 (对于首次运行限制将从上一步中创建的主表计算)
- >在绘图功能中循环参数并获取它们的限制并调用显示功能
- >使用主表值绘制图表,同时应用适当的限制值。
这是最后两个步骤的代码:
显示 = 功能 ({ 处理 ,标签 ,通过 , Src_Type , lmt1 , lmt2 , lmt3 } ,
R1 = 新窗户 ( “趋势分析报告” || 漫长的约会 ( 今天 ()) ,
H列表框 (
面板盒 ( “个人和移动范围” ,当前数据表 ( DT ) ; // dt是第2步的主表。
CC = 控制图 (
样品标签 ( 作为名字 ( 标签 )) ,
团体规模 ( 1 ) , KSigma ( 3 ) ,
作为专栏 ( 处理 ) ,个人测量 ( LCL ( lmt1 [ 6 ]) , AVG ( lmt1 [ 五 ]) , UCL ( lmt1 [ 7 ]))
) ,
哪里 ( 作为专栏 ( 通过 ) == Src_Type )
) ;
) , //排除其他图表类型以缩短空间!!
) ;
) ;
) ;
情节 = 功能 ({ lmts , pmt_path } ,
param_dt = 打开 ( pmt_path , “无形” ) ;
param_summ = param_dt << 摘要 ( 无形 ,
组 ( : 通过...分组 ,: 处理 ,: 样品标签 ,: 通过 )) << 橱窗 ( 0 ) ;
对于 ( q = 12 , q <= NRow ( param_summ ) , q ++,当前数据表 ( param_summ ) ;
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 & : 图表类型 == “累积和” )] ;
ewma_lmts = 作为专栏 ( CLMS [ Ť ])[ lmts << 获取行 ( : 参数 == COL2 & : 图表类型 == “EWMA” )] ;
//当前数据表(dt);
// dt1 = dt <<获取行数(作为列(dt,col4)== clms);
// if(nrows(dt1)> 0,dt << select where(column(dt,col4)!= clms)<< exclude << clear select;);
显示 ( COL2 , COL3 , COL4 , CLMS [ Ť ] , indv_lmts , cusum_lmts , ewma_lmts ) ;
// dt << clear row states;
) ;
) ;
) ;
任何关于我错过这个技巧的帮助都会非常有帮助。我尝试了很多东西但是徒劳无功。 如果我制造了任何混淆,请回复。
谢谢!!
**更新:使用的限值:
LCL = 93.6194355860458; AVG = 101.61918084006; UCL = 109.618926094074;
LCL = 91.1389663749264; AVG = 101.933916247341; UCL = 112.728866119756;
LCL = 95.791125521153; AVG = 99.6808876541094; UCL = 103.570649787066;
LCL = 96.1221889831269; AVG = 99.2913942704352; UCL = 102.460599557744;
LCL =。; AVG = 101.63975868081; UCL =。;
LCL = 96.4170696517472; AVG = 99.4247943691138; UCL = 102.43251908648;
LCL = 85.6694623331952; AVG = 102.356837670718; UCL = 119.044213008241;
LCL = 85.2093412100746; AVG = 105.163584386677; UCL = 125.117827563278; //对于此日志显示“控制限制乱序:必须是LCL <= Avg <= UCL”
刚注意到我的样品标签列未包含在日期列的图表中。 是否有任何导致问题的问题,我不知道?
似乎在尝试获取单个窗口结果时存在一些问题,但是当我尝试在最后一个窗口中追加所有循环时,结果会显示出来。如果有人可以提供帮助,或者我走错了路。
更新的代码:
V = VList Box ( “所有” ) ;
显示 = 功能 ({ 处理 ,标签 ,通过 , Src_Type , lmt1 , lmt2 , lmt3 } ,
R1 = 新窗户 ( “趋势分析报告” || 漫长的约会 ( 今天 ()) ,
H列表框 (
面板盒 ( “个人和移动范围” ,当前数据表 ( DT ) ; // dt是第2步的主表。
CC = 控制图 (
样品标签 ( 作为名字 ( 标签 )) ,
团体规模 ( 1 ) , KSigma ( 3 ) ,
作为专栏 ( 处理 ) ,个人测量 ( LCL ( lmt1 [ 6 ]) , AVG ( lmt1 [ 五 ]) , UCL ( lmt1 [ 7 ]))
) ,
哪里 ( 作为专栏 ( 通过 ) == Src_Type )
) ;
) , //排除其他图表类型以缩短空间!!
) ;
) ; V << 附加 ( R1 ) ; R1 << 关闭窗口 ;
) ;
情节 = 功能 ({ lmts , pmt_path } ,
param_dt = 打开 ( pmt_path , “无形” ) ;
param_summ = param_dt << 摘要 ( 无形 ,
组 ( : 通过...分组 ,: 处理 ,: 样品标签 ,: 通过 )) << 橱窗 ( 0 ) ;
对于 ( q = 12 , q <= NRow ( param_summ ) , q ++,当前数据表 ( param_summ ) ;
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 & : 图表类型 == “累积和” )] ;
ewma_lmts = 作为专栏 ( CLMS [ Ť ])[ lmts << 获取行 ( : 参数 == COL2 & : 图表类型 == “EWMA” )] ;
//当前数据表(dt);
// dt1 = dt <<获取行数(作为列(dt,col4)== clms);
// if(nrows(dt1)> 0,dt << select where(column(dt,col4)!= clms)<< exclude << clear select;);
显示 ( COL2 , COL3 , COL4 , CLMS [ Ť ] , indv_lmts , cusum_lmts , ewma_lmts ) ;
// dt << clear row states;
) ;
) ;
) ;
v = 新窗户 ( “测试” , V ) ;

我遇到的新问题是,每次将所有内容放在一个下面时,不要创建不同的Panel框,而是从显示中删除这个“Where(....)”的东西。