분석의 일부로 최대 8개의 매우 유사한 플롯을 생성하는 스크립트가 있습니다. 플롯 수는 해당 열이 있는지 여부에 따라 달라질 수 있습니다. 플롯의 유일한 차이점은 y축 데이터와 제목에 사용되는 열입니다. 효율성을 위해 각 플롯을 순차적으로 스크립팅하는 것을 피하려고 했습니다. 미리 설정된 열 이름 및 제목 목록에서 가져온 for 루프를 사용하려고 시도했지만 작동하지 못했습니다. JMP 13에서 이것이 실제로 가능합니까? 내가 시도한 스크립트 섹션을 첨부했습니다.
도와 주셔서 감사합니다! 스크립트를 작동시켰습니다!
몇 가지 문제.
1. 그래프 빌더 코드에 ")"가 잘못 배치되어 코드가 구문 분석 오류로 종료되었습니다.
2. :Name() 함수는 요소를 확인하지 않으므로 함수 값으로 cols[f]와 같은 것을 가질 수 없습니다.인용된 문자열만 전달하면 됩니다.
아래 코드는 두 가지 문제를 모두 해결합니다.
For( f = 1, f <= N Items( plots ), f++,
Eval(
Substitute(
Expr(
__plots__ = Graph Builder(
Size( 1267, 905 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :RPN, Order By( __col__ ), Descending, Order Statistic( "Mean" ) ) ),
Y( __col__ ),
Elements( Bar( X, Y, Legend( 4 ), Label( "Label by Value" ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( outline titles[f] )} ),
Dispatch( {}, "RPN", ScaleBox, {Max( 10.5 ), Label Row( Label Orientation( "Angled" ) )} ),
Dispatch( {}, "400", ScaleBox, {Legend Model( 4, Properties( 0, {Fill Color( 53 )} ) )} ),
Dispatch( {}, "graph title", TextEditBox, {Set Text( plot titles[f] )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "RPN" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Affected Lots" )} ),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} )
)
)
),
Expr( __plots__ ), Parse( "Plots" || Char( f ) ),
Expr( __col__ ), Parse( ":Name(\!"" || Char( cols[f] ) || "\!")" )
)
)
);