아래 JSL 코드는 add Element 메서드를 사용하여 오른쪽 그래프에 Contour 플롯을 표시하려고 합니다. 하지만 add Element는 Add Element 연산이기 때문에 오른쪽 그래프의 원래 Points 형식을 제거하거나 바꿀 수 없습니다. 따라서 생성된 이미지가 아래 그림과 다르게 나타납니다. 원래 Points 형식은 추가된 Contour와 함께 유지됩니다. X축은 나중에만 추가할 수 있는데, add Element를 사용하면서 원래 Points 형식을 제거할 방법이 있을까요?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 488, 352 ),
Show Control Panel( 0 ),
Fit to Window( "Off" ),
Variables( Y( :weight ), Overlay( :age ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 21 ) ), Points( X, Y, Legend( 23 ) ) ),
//Elements( Position( 2, 1 ), Contour( X, Y, Legend( 22 ) ) ),
);
gb << Add Variable( {:height, Role( "X" )} );
gb << Add Variable( {:Height, Role( "X" )} );
gb << Add Element( 1, 1, {Type( "Points" ), X, Y} );
gb << Add Element( 2, 1, {Type( "Contour" ), X, Y} );

포인트 요소를 제거할 수 있습니다
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(488, 352),
Show Control Panel(0),
Fit to Window("Off"),
Variables(Y(:weight), Overlay(:age)),
Elements(Position(1, 1), Points(X, Y, Legend(21)), Points(X, Y, Legend(23))),
//Elements( Position( 2, 1 ), Contour( X, Y, Legend( 22 ) ) ),
);
gb << Add Variable({:height, Role("X")});
gb << Add Variable({:Height, Role("X")});
gb << Remove Element(2, 1, 1);
gb << Remove Element(2, 1, 1);
gb << Add Element(2, 1, {Type("Contour"), X, Y});
또는 이를 고려하여 그래프 빌더 표현식을 작성할 수 있습니다.
1. x축이 없더라도 그래프에 이미 점을 추가했습니다. -> 생각보다 많은 점 그래프가 생길 수 있습니다.
그래프 빌더 스크립트 실행 -> 스크립트 복사
Graph Builder(
Size(488, 352),
Show Control Panel(0),
Fit to Window("Off"),
Variables(Y(:weight), Overlay(:age)),
Elements(Points(Y, Legend(21)), Points(Y, Legend(23)))
);
실행 << 변수 추가 -> 스크립트 복사
Graph Builder(
Size(488, 352),
Show Control Panel(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(21)), Points(X, Y, Legend(23)))
);
실행 << 변수 추가 -> 스크립트 복사
Graph Builder(
Size(488, 352),
Show Control Panel(0),
Fit to Window("Off"),
Variables(X(:height), X(:height), Y(:weight), Overlay(:age)),
Elements(Position(1, 1), Points(X, Y, Legend(21)), Points(X, Y, Legend(23))),
Elements(Position(2, 1), Points(X, Y, Legend(24)), Points(X, Y, Legend(25)))
);
</CODE>Run << Remove Element -> copy script</P>
<BR />
<BR />
<PRE><CODE class=" language-jsl">Graph Builder(
Size(488, 352),
Show Control Panel(0),
Fit to Window("Off"),
Variables(X(:height), X(:height), Y(:weight), Overlay(:age)),
Elements(Position(1, 1), Points(X, Y, Legend(21)), Points(X, Y, Legend(23))),
Elements(Position(2, 1), Points(X, Y, Legend(25)))
);
실행 << 요소 제거 -> 스크립트 복사
Graph Builder(
Size(488, 352),
Show Control Panel(0),
Fit to Window("Off"),
Variables(X(:height), X(:height), Y(:weight), Overlay(:age)),
Elements(Position(1, 1), Points(X, Y, Legend(21)), Points(X, Y, Legend(23))),
Elements(Position(2, 1))
);
등.
가능한 한 완벽한 그래프 빌더를 사용하면 성공 가능성이 훨씬 높아집니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(488, 393),
Show Control Panel(0),
Fit to Window("Off"),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(2)))
);
gb << Add Variable({:Height, Role("X"), Position(2)});
gb << Remove Element(2, 1, 1);
gb << Add Element(2, 1, {Type("Contour"), X, Y});
2. 스크립트를 사용하여 x축을 조정할 수 있습니다(등고선 플롯은 점보다 더 많은 공간이 필요하므로 축이 다릅니다)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(488, 352),
Show Control Panel(0),
Fit to Window("Off"),
Variables(Y(:weight), Overlay(:age)),
Elements(Position(1, 1), Points(X, Y, Legend(21)), Points(X, Y, Legend(23))),
//Elements( Position( 2, 1 ), Contour( X, Y, Legend( 22 ) ) ),
);
gb << Add Variable({:height, Role("X")});
gb << Add Variable({:Height, Role("X")});
gb << Remove Element(2, 1, 1);
gb << Remove Element(2, 1, 1);
gb << Add Element(2, 1, {Type("Contour"), X, Y});
min2 = Report(gb)[AxisBox(3)] << get min;
max2 = Report(gb)[AxisBox(3)] << get max;
Report(gb)[AxisBox(1)] << Min(min2) << Max(max2);