JSL을 사용하여 그래프 빌더에서 범례 항목 숨기기JSL의 그래프 빌더에 성가신 문제가 있습니다.산점도에서 점과 더 부드러운 점을 모두 표시하기 위해 점의 투명도를 변경합니다.이 작업을 충분히 잘 수행할 수 있지만 나중에 JSL에서 플롯을 조작하면 포인트가 숨겨진 상태로 유지되는 대신 기본적으로 범례에 다시 추가됩니다. JMP에서는 포인트가 더 이상 중복되지 않는다고 생각하기 때문입니다.그래프 빌더에서 표시하고 싶지 않은 항목을 수동으로 선택 취소할 수 있다는 것을 알고 있지만 JSL에서 이를 수행할 수 있는 방법이 있습니까?


Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기그리고 감사합니다 @anne_sa .귀하의 정보가 올바른 방향을 알려 주었습니다.
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기감사해요 @txnelson 그리고 @jjswan33 당신의 답변을 위해!
내 스크립트와 일치하도록 약간 조정해야 하지만 작동할 것이라고 생각합니다.
다시 한 번 감사드립니다 
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기내 생각에는 Jim의 무차별 대입 방식보다 더 깔끔한 대체 솔루션을 찾았습니다.
대신 함수 시작 부분에 두 개의 목록을 정의합니다.
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);점과 선(내 경우에는) 범례 항목에 필요한 두 개의 목록을 만든 다음 해당 목록을 다음과 같이 그래프 빌더에 전달하는 행렬로 전달합니다.
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)업데이트된 기능의 정식 버전:
RadPlotCreator1XGroupTest = Function({dt, XCol, YCol, OverlayCol, GroupXCol}, {Default Local},
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)
)
);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기이런 종류의 문제를 해결하기 위해 제가 사용하는 무차별적인 방법은 다음과 같습니다.필요한 JSL 코드를 빌드한 다음 내가 만든 JSL을 실행하면 됩니다. 제가 사용한 빅 클래스 데이터 테이블에는 18세의 연령 그룹을 추가했습니다.
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of Age groups
Summarize( dt, ageGroups = by( :age ) );
// Build the JSL
theExpr =
"Graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
\!"400\!",
LegendBox,
{Legend Position(
{6, [ -1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
theExpr = theExpr || "], 7, [0";
For( i = 1, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]}
), Position( {-1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
For( i = 0, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]} ) } )));";
// Execute the JSL string
eval(parse(theExpr));

Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기이런 복사/붙여넣기가 잘못되었습니다. 혼란을 드려 죄송합니다!
다시 실행해 보겠습니다(JMP15 사용)!
먼저 다음 그래프가 있습니다.

해당 스크립트는 다음과 같습니다.
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) )
)
수동으로 범례를 수정하고 포인트와 관련된 항목을 선택 취소합니다.

나는이 그래프를 얻습니다 :

업데이트된 스크립트는 다음과 같습니다.
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{6, [-1, -1, -1, -1, -1, -1], 7, [0, 1, 2, 3, 4, 5, 6, -3]}
), Position( {-1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, -3} )}
)
)
)JSL을 사용하여 이 두 번째 단계를 관리하는 쉬운 방법이 있습니까?
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기저는 개인적으로 JMP 12와 JMP 14 모두에서 이중 범례를 얻습니다.이전에 코드를 게시하지 않았지만 아래에는 문제가 있는 플롯을 만드는 데 사용하는 함수가 있습니다.내 경우에는 JMP가 더 이상 포인트 범례 항목이 중복된다고 생각하지 않고 결과를 표시하는 포인트의 투명도를 설정하기 위해 약간의 코드를 사용하자마자 무슨 일이 일어나고 있다고 생각합니다.
RadPlotCreator1X1YGroup = Function({dt, XCol, YCol, OverlayCol, GroupXCol, GroupYCol}, {Default Local},
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Group Y( GroupYCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
)
)
);
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기사용 중인 JMP 버전과 운영 체제는 무엇입니까?제공하신 JSL을 사용하면 지정하신 것과 같은 결과를 얻을 수 없습니다.JMP 15의 경우 다음을 얻습니다.

JMP 13과 JMP 14에서는 다음을 얻습니다.

JMP 11과 JMP 12에서는 다음을 얻습니다.

하지만 다른 마커와 범례의 점 및 직사각형 표시가 모두 포함된 그래프를 얻을 수 없습니다.
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기안녕 @txnelson ,
답장을 보내 주셔서 감사합니다.
그러나 범례를 완전히 숨기거나 삭제하는 것이 아니라 일부만 삭제하고 싶습니다.
기본적으로 다음 그래프가 있습니다.

그리고 범례에서 포인트 항목만 숨기고 싶습니다.

분명히 범례 위치 옵션의 "-1"은 "이 항목 숨기기"를 의미하지만 그래프에 대한 사전 정보 없이 이 옵션을 쉽게 사용하는 방법을 모르겠습니다.
더 명확해지기를 바랍니다.
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기범례 표시 요소를 사용하여 범례 표시 또는 숨기기를 제어할 수 있습니다.다음은 이를 보여주는 스크립팅 인덱스 항목입니다.
도움말==>스크립팅 색인

JMP의 표시 트리 기능을 사용하여 전체 범례 구성 요소를 삭제할 수도 있습니다.
gb = Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y))
);
report(gb)[LegendBox(1)]<<DELETE></DELETE>
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기안녕하세요 여러분,
나는 현재 JSL을 사용하여 Graph Builder 범례의 일부를 숨기는 것과 같은 문제에 직면하고 있습니다.
"범례" 또는 "범례 위치" 옵션이 도움이 될 수 있다고 생각하지만, 특히 그룹 수를 모르는 경우 작동 방식을 완전히 이해하는 데 어려움이 있습니다.
예를 들어 빅 클래스 테이블을 사용하여 이런 종류의 그래프를 만들고 싶고 범례에 포인트 항목을 표시하고 싶지 않습니다.

해당 스크립트는 다음과 같습니다.
Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y, Legend( 4 ) ), Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{4, [0, 1, 2, 3, 4, 5, 6, -3], 5, [-1, -1, -1, -1, -1, -1]}
), Position( {0, 1, 2, 3, 4, 5, 6, -3, -1, -1, -1, -1, -1, -1} )}
)
)
)연령 변수의 수준 수를 모르고 프로세스를 일반화할 수 있는 방법이 있습니까?
어떤 의견이라도 감사하겠습니다
감사해요
Re: JSL을 사용하여 Graph Builder에서 범례 항목 숨기기나는 이것에 대한 JSL 솔루션이 없다고 생각합니다.그렇다면 정말 그럴 일이 많을 것이다.