オンエアのビデオを見て、縦線とコメント(注釈)を含む管理図を作成しようとしました。行を取得しましたが、コメントはすべて混乱しています。いろいろ試してみましたが失敗しました。添付ファイルとコードを見て、問題を教えてください。
ゆうた 、
私はあなたのスクリプトを使用しました。主な問題は2つあります。 JMP管理図はX軸にシーケンスを使用し、ラベルの定義にはTestDateを使用します。 したがって、ラベルのx位置は、垂直線と同じRow()-1である必要があります。私はRight Justifiedをコメントアウトし、垂直線のすぐ右側にあるラベルにマイナス0.75を使用しました。 右揃えのコメントを削除し、ラベルを垂直線の左側に表示するためにRow()-1にします。
2番目のエラーはy位置です。1.2 * Col Maximum(:Avg)の倍率は> 1500です。 ダミー値を追加しました。ColMax(:Avg)+0.10 * Col Std Dev(:Avg)を検討することをお勧めします。
したがって、問題はxとyの位置でした。 これは、列情報を使用してコメントを追加する簡単な方法です。ただし、これはテーブルが開いているときのログと同じです。
結果のグラフをジャーナルし、データテーブルと管理図レポートを閉じて、管理限界の線幅を変更するなどの更新を行うとします。行とコメントの両方が消えます。 または、ジャーナルを保存して別のジャーナルに送信したり、新しいセッションで開いたりすると、ラベルと線が消えます。
これらの行とテキストを維持するには、データテーブルへの参照ではなく、値を使用する必要があります。 値と参照を使用する2番目のスクリプトを追加します。 しかし、これはスクリプトの何が問題だったかを示すはずです。
Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Avg"},
"IR Chart of IM",
FrameBox,
{Add Graphics Script( 2, Description( "Script" ), Empty() ),
Add Graphics Script(
3,
Description( "Script" ),
For Each Row(
If( Is Missing( :comment ) == 0,
V Line( Row() - 1 )
)
);
For Each Row(
If( Is Missing( :comment ) == 0,
Text(
//Right Justified,
{Row()-0.75, Col Maximum( :Avg )+ 1.005},
:Comment
)
)
);
), Grid Line Order( 5 ), Reference Line Order( 6 )}
)
)
);
ゆうた 、
行と列への参照ではなく、垂直線とテキストの埋め込み値を持つスクリプト(式)を作成するには、複数の方法があります。
式のJSL関数[Substitute()、NameExpr()、EvalExpr()、Expr()]と、テキストをJSL式に変換するJSL文字関数[Concat()、ConcatTo()、Eval Insert()、Parse]は、学ぶ。
cc= Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement )
);
rcc = report(cc);
scrp = Expr(Add Graphics Script(3,
Description( "PM Labels" )));
//get y placement = axis max - 0.5* axis inc
ypos = (rcc[AxisBox(1)]<< Get Max) - 0.5* (rcc[AxisBox(1)] << Get Inc);
txtcmd = "";
For Each Row(
If( Is Missing( :comment ) == 0,
txtcmd ||= EvalInsert("\[
V Line( ^Row() -1^ );
Text(
//Right Justified,
{ ^Row() - .75^, ^ypos^},
"^:comment(Row())^");]\")
)//end if
); //end for each row
show (txtcmd ); //see log
InsertInto(scrp, Parse(txtcmd));
show (scrp ); //see log
txtxp = Substitute(Expr(rcc[FrameBox(1)] << cmd), Expr(cmd), NameExpr(scrp));
Show(NameExpr(txtxp));
Eval(txtxp);
For Each Row()を使用する代わりに、idx = dt << get rows where(!Is Missing(:comment))を使用して、コメントのある行の小さなリストを見つけることができます。
