수직선 및 주석나는 온에어 비디오를보고 수직선과 주석 (주석)이 포함 된 컨트롤 차트를 생각해 보았습니다. 나는 줄을 얻었지만 주석은 모두 엉망입니다. 나는 많은 것을 시도했지만 성공하지 못했습니다. 첨부 된 파일, 코드를보고 문제가 무엇인지 알려주시겠습니까?
스크립팅Re : 수직선 및 주석 @Sebnem ,
나는 당신의 스크립트를 사용했습니다. 두 가지 주요 문제가 있습니다. JMP Control Chart는 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 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 )}
)
)
);
Re : 수직선 및 주석 @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 << get rows where (! Is Missing (: comment))를 사용하여 주석이있는 더 작은 행 목록을 찾을 수 있습니다.

Re : 수직선 및 주석헉헉
이것은 챔피언처럼 작동합니다!
감사합니다!