管理図上の 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 であるが、1 つの変数に対して 60 個のデータがある場合、X 軸が長すぎるため、結果として得られるグラフは愚かに見えます。)
JSL を使用して、列スイッチャーを使用して別の列を選択するたびに、上記のコード (または同等のコード) を使用して X 軸を調整し、問題の変数の実際のデータの数に適切に適応できるようにスクリプトを作成するにはどうすればよいでしょうか?
この構文は「ColumnSwitcherObject << Get Current;」であることがわかります。列の名前を返しますが、列スイッチャーを使用して更新するたびに JSL でアクセスするにはどうすればよいですか?
助けていただきありがとうございます。
自動化とスクリプト作成マスカスタマイゼーション品質およびプロセスエンジニアリングRe: 管理図上の Y 変数の変更に到達するための列スイッチャーのスクリプト作成ありがとう、ジム。 今ではうまく機能しています。
Re: 管理図上の 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>Re: 管理図上の 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
axisbox 構文をフレームボックスに入れると問題が発生します。 エラーの 1 つは、
Send Expects Scriptable Object in access or evaluation of 'Send' , ccReport[axis box( 1 )] << /*###*/Max( 200 ) /*###*/
いくつかのことを試しましたが、役に立ちませんでした。 グラフィックス スクリプト内から軸ボックスにアクセスし続けるためのヒントはありますか? 大変感謝いたします。
Re: 管理図上の 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>