我觀看了一個直播視頻,並試圖拿出一個包含垂直線和註釋(註釋)的控製圖。我明白了,但評論都搞砸了。我嘗試了很多事情,但沒有成功。您能否查看附件,代碼並讓我知道問題出在哪裡?
@Sebnem ,
我用了你的劇本。有兩個主要問題。 JMP控製圖使用X軸順序,並使用TestDate定義標籤。 因此,標籤的x位置應為Row()-1,與垂直線相同。我註釋掉“右對齊”,並使用負0.75來使標籤位於垂直線的右側。 刪除對右對齊的註釋,並將其設置為Row()-1,以使標籤顯示在垂直線的左側。
第二個錯誤是y位置。1.2 * Col Maximum(:Avg)的乘積因子> 1500。 我添加了一個虛擬值,您可能要考慮Col Max(:Avg)+0.10 * Col Std Dev(:Avg)。
因此,您的問題是x和y pos。 這是使用列信息添加註釋的簡便方法。但是,這僅作為打開表時的日誌。
假設您記錄了結果圖形的日誌,請關閉數據表和控製圖報告並進行任何更新,例如更改控制限制的線寬。行和註釋都消失了。 或者,如果您保存日記本並發送給另一個日記本,或者在新的會話中打開它,則標籤和行也消失了。
為了保持這些行和文本,必須使用值而不是對數據表的引用。 我將添加使用值和引用的第二個腳本。 但這應該顯示您的腳本出了什麼問題。
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 )}
)
)
);
@Sebnem ,
創建腳本(表達式)的方法有多種,它們具有垂直線和文本的嵌入式值,而不是對行和列的引用,
表達式的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 <<獲取行,其中(!Is Missing(:comment))可以查找帶有註釋的較小行列表。
