그래프 빌더 막대 그래프 레이블 오프셋그래프 빌더는 막대 그래프에 값 레이블을 표시할 수 있지만 불행하게도 막대 그래프에 데이터도 표시되면 레이블이 완전히 가려집니다.

다행스럽게도 라벨의 위치를 수동으로 변경하는 것은 상대적으로 쉽습니다. 올바른 정렬을 얻는 것은 약간 까다로우며, 이 작업을 두 번 이상 수행하는 것은 상대적으로 실망스럽습니다. 그래프를 두 번째 또는 세 번째 반복한 후에는 정렬을 올바르게 하기 위해 그래프 스크립트를 편집하는 것조차 지루합니다. 약간의 JSL 마법을 사용하면 프레임과 막대 세그먼트를 찾고 레이블 오프셋 세트를 자동으로 조정할 수 있습니다.
아래 스크립트에서는 예제 데이터 테이블이 열리고 그래프 스크립트가 실행된 다음 몇 가지 형식 지정 지침이 따릅니다.
이 스크립트를 사용하려면 데이터 테이블 참조를 대체하거나 "dt=current data table();"의 주석 처리를 제거하십시오. 스크립트가 현재 테이블에 대해 실행되도록 하는 줄입니다. 그래프 빌더 스크립트는 예제입니다. RTM>스크립트 저장>을 클립보드에 사용하여 그래프 빌더 스크립트를 가져온 다음 예제 위치에 붙여넣습니다.
names default to here(1);
//paste your data table reference here, or just use the current data table.
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
//dt=current data table();
obj=dt<<
//Paste your graph builder script here
Graph Builder(
Size( 518, 470 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Bar(X,Y,Legend( 4 ),
Error Interval( "Standard Error" ),
Label( "Label by Value" )),
Points( X, Y, Legend( 5 ) )),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(4,
Properties(0,{Fill Color( 0 ), Fill Pattern( "none" )},Item ID( "Mean", 1 )))}))
);
// End of graph builder script.
//Make a reference for the bar chart segments
fbi= N Items( (obj << xpath( "//FrameBox" )) );
for (ii=1, ii<=fbi, ii++,
frame = Report( obj )[FrameBox( ii )];
seg = (frame << Find Seg( "Bar Seg" ));
//Get variable used for the X axis
vars=obj<< Get Variables();
xx=vars[1];xx[1];
//Find the number of bars (or levels used to make bars)
Summarize( levels = By( eval(xx[1])));
Eval List( levels );
//Build an expression to change the offset
qq=expr(set label offset());
for (i=0, i<=nitems(levels)*fbi, i++, //Note there is a multipler, *fbi. This assumes each level is the same for each frame. Its kind of sloppy, might need to just replace it with a fixed value.
rr={};
insert into (rr, i); //This is the Bar number, starts with zero
insert into (rr,i); //This is the x offset, which is the same as the bar number
insert into(rr, 10); //This is the Y offset
insert into (qq, (rr));
);
//Make magic happen
eval(substitute(expr(seg<<QQ></QQ>
<P> </P>
<P>이전 블로그 게시물에서는 단계를 설명하고 간격 선이 있는 막대 차트인 "Dynamite" 플롯에 주석이 포함된 오류 막대를 추가하기 위한 자동화 스크립트를 포함했습니다. <A href="https://community.jmp.com/t5/Byron-Wingerd-s-Blog/One-Way-ANOVA-Figure-for-Scientists/ba-p/265156" target="_blank">https://community.jmp.com/t5/Byron-Wingerd-s-Blog/One-Way-ANOVA-Figure-for-Scientists/ba-p/265156</A></P><LINGO-TEASER id="lingo-teaser-777858" slang="en-US" mode="UPDATE"><P>데이터가 데이터 레이블을 가리고 있나요?</P></LINGO-TEASER><LINGO-LABS id="lingo-labs-777858" slang="en-US" mode="UPDATE"><LINGO-LABEL>자동화 및 스크립팅</LINGO-LABEL><LINGO-LABEL>기본 데이터 분석 및 모델링</LINGO-LABEL><LINGO-LABEL>데이터 탐색 및 시각화</LINGO-LABEL><LINGO-LABEL>결과 공유 및 전달</LINGO-LABEL></LINGO-LABS>Re: 그래프 빌더 막대 그래프 레이블 고정안녕하세요 @Byron_JMP , 좋은 방법이네요. 매우 유용하네요.
또는 두 번째 막대 그래프 요소에 레이블을 추가할 수도 있습니다.
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 563, 522 ),
Summary Statistic( "Median" ),
Graph Spacing( 4 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Bar( X, Y, Legend( 4 ), Error Interval( "Standard Error" ) ),
Points( X, Y, Legend( 5 ) ),
Bar( X, Y, Legend( 6 ), Bar Style( "Float" ), Label( "Label by Value" ) )
)
);
나는 종종 이와 관련된 문제를 겪습니다. 수평 레이블을 위한 공간이 없습니다.

JSL을 통해 라벨을 회전할 수 있는 방법이 있나요?
답: 그래프 빌더 막대 그래프 레이블이 수정되었습니다.레이블을 다음과 같이 회전시키고 싶은 것 같습니다.

당신의 질문이 없었다면 나는 시도하지 않았을 것입니다. 글꼴 속성과 각도를 설정할 수 있는 모호한 JSL이 있습니다. 솔직히 저는 이 작업을 이전에 본 적이 없으며 꽤 환상적입니다.
JSL은 다음과 같습니다: Set Font( "" , 18 , "" , 90 ). 글꼴은 "", 크기는 18포인트, 서식은 "", 각도는 90입니다. 스크립팅 인덱스에서 예제에는 지정된 글꼴과 서식이 지정되어 있지만 이를 ""로 바꾸면 다음을 사용하는 것으로 보입니다. 기본값. 각도를 -90으로 변경하면 텍스트가 아래에서 위로 읽혀집니다.
names default to here(1);
//paste your data table reference here, or just use the current data table.
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
//dt=current data table();
obj=dt<<
//Paste your graph builder script here
Graph Builder(
Size( 518, 470 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Bar(X,Y,Legend( 4 ),
Error Interval( "Standard Error" ),
Label( "Label by Value" )),
Points( X, Y, Legend( 5 ) )),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(4,
Properties(0,{Fill Color( 0 ), Fill Pattern( "none" )},Item ID( "Mean", 1 )))}),
Dispatch( {}, "Graph Builder", FrameBox,
{DispatchSeg(
BarSeg( 1 ),
Set Font( "", 18, "", 90 )
)}
)
)
);
// End of graph builder script.
//Make a reference for the bar chart segments
fbi= N Items( (obj << xpath( "//FrameBox" )) );
for (ii=1, ii<=fbi, ii++,
frame = Report( obj )[FrameBox( ii )];
seg = (frame << Find Seg( "Bar Seg" ));
//Get variable used for the X axis
vars=obj<< Get Variables();
xx=vars[1];xx[1];
//Find the number of bars (or levels used to make bars)
Summarize( levels = By( eval(xx[1])));
Eval List( levels );
//Build an expression to change the offset
qq=expr(set label offset());
for (i=0, i<=nitems(levels)*fbi, i++, //Note there is a multipler, *fbi. This assumes each level is the same for each frame. Its kind of sloppy, might need to just replace it with a fixed value.
rr={};
insert into (rr, i); //This is the Bar number, starts with zero
insert into (rr,i); //This is the x offset, which is the same as the bar number
insert into(rr, 10); //This is the Y offset
insert into (qq, (rr));
);
//Make magic happen
eval(substitute(expr(seg<<QQ></QQ>
<P> </P>Re: 그래프 빌더 막대 그래프 레이블 오프셋시원한! 놀라운!
감사해요.
Re: 그래프 빌더 막대 그래프 레이블 오프셋흠 ...
JSL 없이 어떻게 그래프 상단에서 레이블을 제거할 수 있었는지 궁금했습니다.
-> 아: JMP17!
따라서 " Bar Graph Label Offset "에 대한 또 다른 해결 방법은 다음과 같습니다.
JMP 17 로 다시 전환하고 x축의 사용자 연령을 오버레이 로 표시합니다.
// JMP 17!
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << new column("one", set each value(1));
dt << Graph Builder(
Variables( X( :age ), Y( :height ), Overlay( :age ), Color( :one ) ),
Elements(
Bar(
X,
Y,
Legend( 1 ),
Summary Statistic( "Mean" ),
Error Interval( "Standard Error" ),
Label( "Label by Value" )
),
Points( X, Y, Overlay( 0 ), Legend( 2 ) )
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
1,
Properties(
0,
{Fill Color( 0 ), Fill Pattern( "none" )},
Item ID( "1", 1 )
)
), Legend Model(
2,
Properties( 0, {Line Color( 0 )}, Item ID( "1", 1 ) )
)}
)
)
);

단점:
- JMP18에서 수정된 오류 막대에 버그가 있는 것 같습니다.
- 다른 멋진 JMP 18 기능은 없습니다.
Re: 그래프 빌더 막대 그래프 레이블 오프셋JSL 경험이 없는 모든 JMP 사용자를 생각하면...
실제로 GUI에서 바로 레이블 배치를 제어할 수 있어야 합니다.
아, @shampton82 님의 2020년 소원이 담긴 아이디어입니다.
그래프 빌더 막대 차트 데이터 레이블 컨트롤
Re: 그래프 빌더 막대 그래프 레이블 오프셋이 블로그와 위시리스트 아이템 @hogi 를 연결해 주셔서 감사합니다! JSL을 사용하여 이렇게 많은 기능을 추가할 수 있다는 것은 좋지만, JMP를 선보일 때 가장 당황스러운 점 중 하나는 사용자가 Excel에서 할 수 있는 차트 사용자 정의로 매우 기본적인 작업을 수행할 수 없다는 것입니다. JMP에서는 쉽게 할 수 없다는 사실에 놀랐습니다.)
@Byron_JMP JMP 팀과 협력하여 이 훌륭한 사용자 정의가 비JSL 기반이 되도록 만드세요!
스티브
Re: 그래프 빌더 막대 그래프 레이블 오프셋동의하다.
Re: 그래프 빌더 막대 그래프 레이블 오프셋방금 JMP 17과 JMP18의 차이점을 알아냈습니다.
스택 모드로 전환하면 레이블이 JMP18 중앙에 배치됩니다.
불행하게도 이 모드는 오류 막대와 호환되지 않습니다.
따라서 다른 부동 막대 차트와 함께 오차 막대를 추가해야 합니다.
전체적으로:

100% GUI - 0% 스크립팅.
스크립트는 다음과 같습니다.
더보기...Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 521, 429 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Points( X, Y, Legend( 2 ) ),
Bar(
X,
Y,
Bar Style( "Stacked" ),
Summary Statistic( "Mean" ),
Label( "Label by Value" )
),
Bar(
X,
Y,
Bar Style( "Float" ),
Summary Statistic( "Mean" ),
Error Interval( "Standard Error" )
)
)
);
... 이 게시물이 라벨 위치를 지정하는 새로운 기능을 반대하는 데 사용되지 않기를 바랍니다.
Re: 그래프 빌더 막대 그래프 레이블 오프셋이 게시물에 감사드립니다. 도움이 될 것입니다.
Re: 그래프 빌더 막대 그래프 레이블 오프셋히트맵 플롯에도 대화할 수 있는 "세그먼트"가 있나요?
이 목록에 없음:

이걸 Heatmap Cells Seg 라고 부르나요?
myseg << get description = "Heatmap Cells";
-> 아니요.
Re: 그래프 빌더 막대 그래프 레이블 오프셋직사각형 세그.
불행히도 Heatmap Seg = Rect Seg는 거의 쓸모가 없습니다. : (