안녕하세요. 저는 JMP를 처음 접했고 이변량 도표 플랫폼을 사용하여 데이터세트에서 이변량 도표 목록을 생성하고 있습니다. 저는 자동 생성된 JSL 스크립트를 사용하여 아래와 같이 모든 플롯에 동일한 축 및 범례 설정을 추가하기 시작했습니다.
Bivariate(
Y( :PeakValue ),
X( :"Duration (s)"n ),
By( :Checker Name ),
SendToReport(
Dispatch(
{},
"Duration (s)",
ScaleBox,
{Scale( "Log" ), Format( "Engineering SI", 9 ), Min( 0.0000000001 ),
Max( 0.001 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 0 )}
)}
),
Dispatch( {}, "PeakValue", ScaleBox, {Label Row( Show Major Grid( 1 ) )} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Drawing Mode( "Normal" ),
Row Legend(
Corner,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
위에서 볼 수 있듯이 데이터 세트를 Checker Name 열로 그룹화합니다. 그러나 저는 투명한 Rect() 그래픽 객체를 추가하여 각 산점도에 허용 가능한 범위를 생성함으로써 이 스크립트를 확장하고 싶었습니다. 그러나 이러한 Rect() 객체의 크기와 위치는 플롯되는 이변량 플롯에 따라 달라집니다. 즉, Rect 크기 조정 변수에 대한 :Checker Name 키를 생성해야 합니다. 세트의 이변량 플롯. 위에 있는 미리 생성된 스크립트에 통합하기 쉽고/타당한 것입니까?
감사합니다!
JMP에서 대화형으로 시도해 볼 수 있습니다. 각 산점도에 Rect() 값을 하드 코딩해야 할 가능성이 높습니다. 루프와 함께 JSL을 사용하는 것이 좋습니다.
By( :Checker Name )를 사용하여 이변량 함수를 고유한 검사기 이름을 가진 이변량 루프로 분할하는 것을 어떻게 권장하시겠습니까?
-야곱
변수에 대한 참조 목록을 저장합니다: biv = Bivariate( ... ). 목록을 반복할 수 있습니다. 개요 상자를 쿼리하여 기준 변수 수준을 결정하거나 Summarize() 함수를 사용하여 그룹 목록을 가져올 수 있습니다. 같은 순서로 진행됩니다.
검사기 이름 열의 가능한 각 키에 직사각형 개체를 할당하기 위해 연관 배열을 사용하는 것을 고려 중입니다. 개요 상자 목록을 반복하고 각 상자에 ect() 객체를 추가하는 예를 제공할 수 있습니까? 저도 Summarize 기능이 낯설네요.
JMP18을 사용하고 있다고 가정합니다. By를 사용하면 플랫폼 목록을 다시 얻은 다음 이를 반복할 수 있습니다. 그런 다음 제목 등을 얻는 방법을 알아내는 것입니다(또는 요약을 사용할 수 있으며 이 경우에는 약간 다른 방식으로 참조 목록을 작성합니다). 루프를 파악하기 어려운 경우 먼저 단일 이변량 플랫폼을 만들어 작동시킨 다음 루프로 확장할 수 있습니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_rect = Associative Array();
aa_rect["M"] = Expr(Rect(80, 60, 120, 55));
aa_rect["F"] = Expr(Rect(90, 65, 140, 55));
bivs = dt << Bivariate(Y(:height), X(:weight), By(:sex));
For Each({cur_biv}, bivs,
ob = Report(cur_biv)[OutlineBox(1)];
obtitle = ob << get title;
show(obtitle);
category = Word(-1, obtitle, "=");
fb = ob[FrameBox(1)];
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Blue");
Pen Size(2);
Expr(aa_rect[category]);
)
));
);
