管理図のイベント行とコメント
管理図に既知のイベントの注釈を付けますか? グラフにイベント線を追加する必要がある状況に頻繁に遭遇します。 これらは、平均限界や管理限界を再計算する必要がなく、何かが起こったことを示すマーカーが必要なだけであるため、フェーズとは異なります。 便利な自動化された方法でグラフ上の点にラベルを付ける必要がある場合もあります。 このブログでは、イベント ラインの描画やグラフへのコメントの追加を容易にする、コントロール チャート グラフに追加できるいくつかのスクリプトについて説明します。

グラフをカスタマイズする最初のステップは、グラフ内を右クリックして「カスタマイズ」を選択することです。「グラフのカスタマイズ」ダイアログが表示されます。 左上の「+」アイコンをクリックすると空のスクリプトが開き、ここに以下で説明する例を貼り付けることができます。この最初の例では、テーブルに「Comment」という文字列が必要です。 この列に値があると、上の例のようにグラフ上に垂直線が描画されます。

2 番目のステップでは、このウィンドウに追加できるいくつかのカスタム スクリプトを確認します。 命令または引数の各セットはセミコロンで結合する必要があります。 グラフ内でこれらのカスタム スクリプトを使用する方法を学ぶには、ダイアログ ウィンドウの [サンプルとテンプレート] ドロップダウンが最適です。 また、「ヘルプ」タブの下にある「スクリプト索引」には、各機能の詳細が記載されていました。 この小さなスクリプト ウィンドウには制限があることに注意してください。そのため、変更を適用した後、レポート スクリプトをスクリプト ウィンドウに保存して編集を続けることを検討してください。 グラフに追加されたすべてのカスタム スクリプトは、レポート オブジェクト スクリプトにも表示されます。 このダイアログを使用すると、JSL やレポート オブジェクトのスクリプトの操作方法について詳しく知らなくても、グラフに簡単に追加できます。
カスタム グラフ スクリプト 1: 行の追加
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row() ) ) );
説明:
- For Each Row(): これにより、数式が列レベルではなく各行で評価されます。
- Is Missing(): この関数は、行が空の場合は「0」を返し、そうでない場合は「1」を返します。 行が欠落していない場合 (つまり = 「0」)、V ラインが評価され、ラインが描画されます。
- V Line(): これについてはスクリプト インデックスを確認してください。使用できる興味深いオプションがたくさんあります。 この場合、番号を 1 つだけ指定しているので、その番号の位置でフレーム全体に垂直線が描画されます。 (番号はないですよね?)
- Row(): この関数は行番号を返します。 この行番号をフレーム内に垂直線を引く場所として使用します。
カスタム グラフ スクリプト 2: 線にラベルを追加する
For Each Row( If( Is Missing( :Comment ) == 0, Text( Right Justified, {row(),
Col Maximum( :Data ) * 1.2},:Comment)));
説明:
- For Each Row(): これにより、数式が列レベルではなく各行で評価されます。
- If(): これは古典的な「If、Then、Else」関数です。 条件が true の場合は最初のことを実行し、そうでない場合は 2 番目のことを実行します。 ここを除いて「else」はないため、条件が true の場合は最初のことが起こり、そうでない場合は何も起こりません。
- Is Missing(): この関数は、行が空の場合は「0」を返し、そうでない場合は「1」を返します。 ここで、行が欠落している場合は何も起こりませんが、欠落していない場合はテキスト関数が評価されます。
- Text(): ここでも、スクリプト インデックスで、ここに含めることができるすべての引数と、いくつかの良い例を確認してください。 ここでは、座標 Y と X にテキストを配置します。テキストは :Comment 列にあります。
- Row() は x 位置、y 位置は :Data 列の最大値 (Col Maximum()) の 1.2 倍です。 これにより、テキストがデータ ポイントの少し上に表示されます。
カスタム グラフ スクリプト 3: データ ポイントにラベルを追加します。
おそらく、列と行のプロパティを使用してデータ ポイントにラベルを付ける方が簡単かつ適切ですが、場合によっては、このようなスクリプトによるソリューションが許容範囲内で複雑になることがあります。
For Each Row(If( Is Missing( :Note ) == 0, If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note ))));
説明:
- これは少し派手になります。 この式には、ネストされた If ステートメントがあります。 Note が欠落しておらず、:Data が :Data の列平均以下である場合は、:Note のテキストをデータ ポイントの下に配置するか、そうでない場合は :Note のテキストをデータ ポイントの上に配置します。
- このようにグラフでは見やすくなりますが、この例では必要以上に少し複雑に見え始めます。
- より単純なバージョンは次のようになります。
For Each Row(If( Is Missing( :Note ) == 0, Text( Right Justified,{Row()+1,:Data}, :Note );
「row()+1」はテキストをデータポイントの右側に移動します。
管理図スクリプトの例
このスクリプトのテーブルには次の列が必要です。テーブルの例を添付します。
- ID、連続する行番号
- データ、トレンドのデータを含む列
- コメント、縦行のコメントがまばらに入力された列
- メモ、特定のデータ ポイントに関するメモがまばらに入力された列
このスクリプトは、上図の管理図を生成します。
Control Chart(
Sample Label( :ID ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Data, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Data"},
"IR Chart of IM",
FrameBox,
{Frame Size( 800, 200 ), Add Graphics Script(
1,
Description( "Script" ),
For Each Row( If( Is Missing( :Comment ) == 0, V Line( Row() ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, {Row(), Col Maximum( :Data ) * 1.2},:Comment ))
);
For Each Row(
If( Is Missing( :Note ) == 0,
If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note )))
);
), Grid Line Order( 2 ), Reference Line Order( 3 )}
),
Dispatch( {"Individual Measurement of Data"}, "IR Chart of IM", FrameBox( 2 ),
{Frame Size( 72,200)})))
1. はい、何を付け加えますか?
2. 間接的にそれを行う方法があると思います。 レポートの作成にどの列が使用されたかをクエリし、そのようにして列名を取得する方法があると思います。 次に、データ列への参照を含むカスタム スクリプトをグラフに追加します。
2. 変数のリストを繰り返し処理し、カスタム スクリプトに現在の列への参照を含めると簡単になります。
こんにちは、Byron さん、もう 1 つ (実際には 2 つです!!)、「カスタム グラフ スクリプト 3: データ ポイントにラベルを追加する」というタグ ラインを追加することは可能ですか。また、Y軸に正確に名前を付ける必要はなく(例:「:Data」)、デフォルトで列名を付けるスクリプト方法はありますか?
乾杯イアン
イアン、
何が原因でそうなるのかはわかりませんが(まだコーヒーが足りません)、これで解決します。
これはカスタマイズメニューのスクリプトです。
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row()-1 ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, { row()-1, Col Maximum( :Data ) * 1.2}, :Comment )
)
);
:ID 列を row()-1 に置き換えて、位置に行番号を使用し、それを 1 つ戻します。
こんにちは、バイロン
スクリプトを SPC チャート ビルダーにコピーしようとしました
ファイルへのリンクを送信し、次のコメントを付けました。
1_ID 別管理図: これは変更されていない管理図です - すべて問題ありません

2_ID によるチャートの制御とチャート ビルダーの制御: これは (#1) のスクリプトをチャート ビルダーにコピーしたものです。垂直線は X 軸上で 1 つずれています。最初の 2 つの特殊原因を参照してください。
管理図ビルダー

3_ID による管理図と管理図ビルダー AS 数値/連続: ID を数値/順序から数値/連続に変更すれば、すべて問題ありません。

4_ID による管理図と管理図ビルダー AS 数値/連続英字/数値): ただし、x 軸に英字/数値のバッチ番号をプロットしたいのですが、再度オフセットされます。

気が狂いそうなので助けてもらえますか、ファイルの場所を送ります
https://1drv.ms/u/s!Au2FkmkZvSi-sA8j_g625J1VFdtw?e=0UPtz6
乾杯イアン