編寫列切換器腳本以實現控製圖上 Y 變量的變化我有一個包含大量響應(許多列)的數據表。 所有這些都可以繪製控製圖。
當我添加列切換器時,我可以按照預期輕鬆地在響應(不同列)之間切換以更新控製圖,以便我可以立即查看感興趣的變量。
唯一的缺點是,默認情況下,x 軸的長度始終相同,但每列中的數據數量不同;有時很多,但有時不是。
為了使 x 軸適應任何給定列中的數據數量,我可以這樣做:
nData = N Rows() - Col N Missing( Column( 1 ) );
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << Max( nData + 3 ) << inc( Ceiling( (nData + 3) / 15 ) );
這對於第一個控製圖非常有用,但是當我使用列切換器選擇另一個變量時,x 軸再次太長,返回到其默認設置。 (如果 N Rows() 是 3,000,但對於一個變量我有 60 個數據,則生成的圖表看起來很愚蠢,因為 x 軸太長。)
使用 JSL,我如何編寫腳本,以便每次使用列切換器選擇另一列時,我都可以使用上面的代碼(或等效代碼)來調整 x 軸以很好地適應相關變量的實際數據數量?
我看到這個語法“ColumnSwitcherObject << Get Current;”返回列的名稱,但每次使用列切換器更新時如何通過 JSL 進行訪問?
謝謝你的幫助。
自動化和腳本編寫大規模定制質量和工藝工程回复:編寫列切換器腳本以實現控製圖上 Y 變量的變化謝謝,吉姆。 現在效果很好。
回复:編寫列切換器腳本以實現控製圖上 Y 變量的變化而不是設置
ccReport = cc << Report;
我認為你在使用它時應該從源碼中引用它
report(cc)[AxisBox(1)] << max(X+1);
下面是一個示例腳本,它從 cc 中獲取正確的引用
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>回复:編寫列切換器腳本以實現控製圖上 Y 變量的變化謝謝,吉姆。
正如您所建議的,使用框架框,我確實可以在嵌入式日誌中顯示選擇用於更新控製圖的列。 (我想在 12 列之間切換,並且每列都有不同的數據數量,因此希望在每種情況下重新縮放 x 軸以反映所選列中的數據數量。)
我很容易捕獲所選的列:
ccReport[FrameBox(1)]<< add graphics script(
cName = cs << Get Current;
show(cName);
If(cName == "JW004",
show("JW004 selected");
,
cName == "JW001",
show("JW001 selected");
,
);
在語法的其他部分,我可以使用例如輕鬆更改 x 軸
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << max(x+1); // where x is the no. of data in the column
如果我將軸盒語法放入框架盒中,問題就會出現。 錯誤之一是
Send Expects Scriptable Object in access or evaluation of 'Send' , ccReport[axis box( 1 )] << /*###*/Max( 200 ) /*###*/
我嘗試了一些方法,但沒有成功。 您是否有任何提示,以便我可以繼續從圖形腳本中訪問軸框? 將不勝感激。
回复:編寫列切換器腳本以實現控製圖上 Y 變量的變化我認為您可以通過將圖形腳本附加到控製圖中的 FrameBox() 來解決您的問題。只要 FrameBox() 中發生更改,該腳本就會運行。下面是一個簡單的腳本,我相信您應該能夠在此基礎上進行構建
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>