<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 :列表[一世] ,不保存) )
)
) ;
以及相關的輸出:

-戴夫