안녕하세요 JMP 커뮤니티입니다.
주석 그래프 작성기 플롯의 보다 지루한 작업 중 일부를 자동화하기 위해 다음 스크립트를 사용하여 데이터 그룹 사이에 수평선 세그먼트를 동적으로 추가하려고 합니다. 안타깝게도 이 특정 작업에 간단한 Expr()과 Substitute() 및 Eval()을 사용할 수 없는 것 같습니다. 참고: 민감한 데이터로 작업 중이므로 필요한 경우 모의 DATA 및 STAT 테이블을 생성해야 합니다.
Names Default to Here (1);
dt1 = Data Table ("DATA.JMP");
dt2 = Data Table ("STAT.JMP");
gbe = Expr (dt1 << Graph Builder(
Size( 699, 625 ),
Variables(
X( :R vs NR ),
Y( _YS_ ),
Color( :R vs NR )
),
Elements(
Points( X, Y, Legend( 6 ) ),
Box Plot( X, Y, Legend( 8 ), Outliers( 0 ) )
),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
2,
Description( "Script" ),
Pen Size (3);
// The following line of code return the error "Invalid Matrix Token"
Line ([0.2,0.8], [Y1, Y1]);
Text( Center Justified, {0.5, top1}, VAL1 );
// The following line of code return the error "Invalid Matrix Token"
Line ([0.2,1.8], [Y2, Y2]);
Text( Center Justified, {1.0, top2}, VAL2 );
// The following line of code return the error "Invalid Matrix Token"
Line ([1.2,1.8], [Y1, Y1]);
Text( Center Justified, {1.5, top1}, VAL3 );
), Grid Line Order( 1 ), Reference Line Order( 3 )}
)
)
)
);
For (i = 749, i <= 750, i++,
YCOL = Column (dt1, i);
PVAL1 = "p VAL = " || CHAR(format(Column (dt2, 2) [i-747],"PValue"));
PVAL2 = "p VAL = " || CHAR(format(Column (dt2, 3) [i-747],"PValue"));
PVAL3 = "p VAL = " || CHAR(format(Column (dt2, 4) [i-747],"PValue"));
data_topy1 = Col Quantile (YCOL, 0.99);
data_topy2 = Col Quantile (YCOL, 0.975);
gbx = Substitute(Name Expr (gbe),
Expr (_YS_), YCOL,
Expr (VAL1), PVAL1,
Expr (VAL2), PVAL2,
Expr (VAL3), PVAL3,
Expr (Y1), data_topy1,
Expr (Y2), data_topy2
);
gb = Eval (gbx);
gb << journal;
gb << close window;
);모든 아이디어를 환영합니다.
감사합니다
귀하의 솔루션은 HLine과 VLine이 무한히 길기 때문에 이 경우에 적합합니다. 여기에 설명과 몇 가지 대안이 있습니다.
대괄호 행렬은 컴파일 타임 상수이며 변수를 사용할 수 없습니다. 저는 종종 다음과 같은 작은 행렬을 만들기 위해 연결 연산자를 사용했습니다.
a = 17;
b = 23;
Show( a || b, a |/ b );
|| b = [17 23];
a |/ b = [17, 23];
다음과 같이 matrix()를 사용할 수도 있습니다.
matrix( {{a, b}, {a, a}} );[17 23, 17 17]
선을 0.2와 1.8로 제한해야 하는 경우 행렬이 아닌 목록을 사용하는 다른 형태의 선을 사용할 수 있습니다.
line( {x1,y1}, {x2,y2} )line 함수는 각 목록의 표현식을 평가합니다.
그리고 수평 또는 수직 이외의 각도에서 무한히 긴 선이 필요한 경우 YFunction()을 사용할 수 있습니다.
YFunctionYFunctionY함수