
我遇到了一個問題,我想看看我的舊控制限相對於一組控製圖的當前或新的固定控制限會是什麼樣子。 通常我會為每個圖表添加參考線,但我認為可能有更好的方法,使用一個被遺忘已久(至少對我而言)的平台消息。
今年早些時候,我在考慮添加一個新的列屬性會是什麼樣子,在本例中是環境監測圖表的 Action 和 Alert Limts,然後將該列屬性用作控製圖表中的參考線。 鏈接到 EM 博客
當我在腳本索引中尋找完全不同的東西時,我遇到了一個名為“添加限制”的函數。 據我所知,這個功能已經存在很長時間了,至少在 v14 之前,它可以用來將控制上限和下限發送到控製圖。 這些限制顯示為虛線,並列在圖表旁邊的表格中。 我需要大量的 JSL 才能做到這一點,所以很高興發現如此實用的功能。
添加限制的基本用法如下所示:
//Example of adding limits to a control chart
ccb = dt << Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) );
ccb << chart( position( 1 ), Add Limits( {LCL( 20 ), UCL( 30 )} ) );
JSL 的最後一行向圖表發送一條消息,其中包含用作虛線限制的值。
當然,我想在任何列中動態地使用它,所以這需要一些額外的花哨的腳部工作。
首先讓我們建立一個表格作為例子。
dt=New Table( "old and new control limits",Add Rows( 50 ),
New Column( "Column 1",Numeric,"Continuous",Format( "Best", 12 ),
Formula( Round( Random Normal( 25, 3 ), 0 ) )));
column(dt, 1)<< Delete Formula;
請注意,我正在刪除生成一些隨機數據以在構建表後立即使用的公式。 這修復了表中的值。
下一步是添加一種新的列屬性,這是 JMP 中不存在的自定義屬性。
Column( dt, 1 ) << set property( "Old Control Limits", {LCL( 20 ), UCL( 30 )} );
運行此行後,數據表中的列現在有一個名為舊控制限的屬性。
只是為了檢查腳本是否有效,您可以通過執行此操作查看列屬性的值。
OCL = Column( dt, 1 ) << Get Property( "Old Control Limits" );Show( OCL[1], OCL[2] );
新變量 OCL 有兩個值,LCL(20) 和 UCL(30)
我可以在新的控製圖中使用這些值。
接下來的幾行可能看起來很奇怪,但它們非常健壯並且利用了 JSL 的基於函數的結構。
首先,我將定義幾個空的或幾乎空的參數,然後將它們嵌套在一起。
ccbe = Expr(Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) ));
ce = Expr( chart( position( 1 ) ) );
ae = Expr( add limits() );
le = {};
通過設置這些表達式,我可以在不評估它們的情況下處理每個部分。
ccbe,控製圖生成器表達式是一個函數,“控製圖生成器”有兩個參數,“變量”和“顯示控制面板”
我想向 Control Chart Builder 函數添加一個名為 Chart() 的新參數。 新變量 ce 是一個帶有參數“Chart”的表達式,而 Chart 包含一個參數“Position (1)”。
我想添加 Add Limits 到 Chart 參數,所以我有變量 ae,以引用一個空的 Add Limits 表達式。
最後我製作了一個名為“le”的空列表,它將包含我從上一步的 OCL 變量中的“Get Properties”獲得的限制。
接下來,我將把各個部分疊加在一起:
Insert Into( le, OCL );show( le );
Insert Into( ae, le );Show( ae );
Insert Into( ce, Name Expr( ae ) );Show( ce );
Insert Into( ccbe, Name Expr( ce ), 2 );
ccbe;
首先,我將 OCL 中的事物列表插入到文件中。
其次,我將“le”插入“ae”,然後將“ae”插入“ce”。 在第二種情況下,我將“ae”包裝在 Name Expr() 中。 這給了我 ae 的評估表達式而不評估它。 這個 NameExpr() 方法非常方便。
最後我在ccbe中插入ce,就是整個控製圖表達式。
在上面的 JSL 中,我在每個步驟後都包含了一個“顯示”,這樣您就可以在日誌中看到函數是如何構建的。
最後一步是獲取圖形。 通過單獨運行 ccbe,保存完整表達式的變量得到評估,我得到一個控製圖,其中虛線表示舊的控制限制,它來自列屬性。
稍加努力,我很確定可以從一個包含當前和舊控制限制的表開始,該表可用於填充整個過程變量表的所有列屬性。
整個腳本包含在下面。