我觀看了一個直播視頻,並嘗試製作一個包含垂直線和註釋(註釋)的控制圖。 我明白了台詞,但評論全亂了。 我嘗試了很多事情但沒有成功。 您能查看附件、程式碼並讓我知道問題是什麼嗎?
@塞布內姆,
有多種方法可以創建具有垂直線和文字的嵌入值的腳本(表達式),而不是對行和列的引用,
用於表達式的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);
請注意,可以使用 idx= dt << get rows where ( !Is Missing( :comment ) ) 來尋找帶有註解的較小行列表,而不是使用 For Each Row() 。

@塞布內姆,
我用了你的腳本。 有兩個主要問題。JMP 控製圖使用 X 軸序列,而 TestDate 用來定義標籤。所以標籤的 x 位置應該是 Row() - 1,與垂直線相同。 我註解掉了右對齊,並使用負 0.75 使標籤位於垂直線的右側。刪除 Right Justified 上的註解並將其設為 Row() - 1,以便標籤顯示在垂直線的左側。
第二個錯誤是 y 位置。 您的乘數 1.2*Col Maximum(:Avg) 大於 1500。我新增了一個虛擬值,您可能需要考慮 Col Max(:Avg) +0.10 * Col Std Dev(:Avg)。
所以你的問題是 x 和 y 位置。這是使用列資訊新增註解的簡單方法。 但是,這只是表打開時的日誌。
假設您記錄結果圖,關閉資料表和控制圖報告並進行任何更新,例如變更控制限的線寬。台詞和評論都消失了。或者,如果您保存日記並發送給另一個人或在新會話中打開它,標籤和線條也會消失。
為了維護這些行和文本,必須使用值,而不是對資料表的參考。我將新增第二個使用值和引用的腳本。但這應該顯示您的腳本出了什麼問題。
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 )}
)
)
);