<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項(奈秒:第一個表) ,我++,
嘗試(關閉(奈秒:第一個表[我] ,不保存) )
)
) ;
以及相關的輸出:

-戴夫