모든 숫자 값을 가진 데이터가 있습니다. 그래프 빌더에서 Mixed Stacked 및 Side-by-side Bar Graph를 혼합하여 플로팅하려면 어떻게 해야 합니까? 첨부된 2개의 이미지와 같이 내 그래프를 플롯하고 싶습니다.
첫 번째 이미지는 누적 및 병렬 막대 그래프가 혼합된 각 변수의 백분율만 표시하지만 두 번째 이미지에서는 변수 값도 표시합니다.
자세한 절차나 JSL 스크립트를 공유해주시면 큰 도움이 될 것 같습니다.
아래는 샘플 데이터입니다.
| 학생 |
Total_Math_Physics |
수학 |
물리학 |
Total_Badminton_Football |
배드민턴 |
축구 |
| ㅏ |
50 |
30 |
20 |
40 |
10 |
30 |
| 비 |
40 |
25 |
15 |
20 |
10 |
10 |
| 씨 |
30 |
15 |
15 |
50 |
40 |
10 |
감사해요 


안녕 @라자트
약간의 작업만으로 원하는 것에 거의 근접할 수 있다고 생각합니다.
직접 찾아보실 수 있도록 저장된 스크립트와 함께 재구성된 데이터 테이블을 첨부했습니다. 내가 한 일은 다음과 같습니다.
1. 원본 테이블 쌓기:
Current Data Table() << Stack(
columns( :Maths, :Physics, :Badminton, :Football ),
Source Label Column( "Label" ), Stacked Data Column( "Data" )
);

이는 다음을 제공합니다.
2. 활동 그룹화(수학/물리 vs 배드민턴/축구)를 나눌 수 있는 변수가 필요하므로 새 열 그룹을 추가하고 AABBAABB 등을 반복합니다. 이 작업은 원하는 방식으로 수행할 수 있습니다. 예를 들어 명목 변수만 있으면 됩니다. Sequence()를 사용하는 또 다른 방법은 다음과 같습니다.
New Column("Group", Numeric, "Nominal", Formula(Sequence(1, 2, 1, 2)) );

3. 그래프 빌더:
내가 한 것처럼 보이는 그래프를 얻기 위해 여러 설정을 조정했지만 기본 단계와 짧은 비디오는 다음과 같습니다.
단계:
- "데이터" 열을 Y 역할로 드래그
- 두 "합계" 열을 동시에 Y 드롭 영역의 맨 위로 드래그합니다.
- 점을 끄고 Bar 요소를 켭니다.
- 아래쪽 그래프 "데이터"의 막대 스타일을 "누적"으로 변경합니다.
- "라벨"을 오버레이 역할로 드래그
- 상단 표시줄 컨트롤 아래의 "변수"에서 오버레이 역할을 끕니다.
- "그룹"을 X축 역할로 드래그
- 제어판에서 상위 플롯에 대한 "그룹" 변수를 끕니다.
- "학생"을 그룹 X 역할로 끌어다 놓습니다.
- 아래쪽 그래프의 "Summary Statistic"을 "요인의 %"로 변경합니다(비디오에서 표시하지 않음).
- 각 막대의 레이블을 "값별 레이블"로 변경
이는 다음을 제공합니다.
여기에서 당신은 많은 것을 할 수 있습니다. 처음에 보여드린 최종 그래프의 경우 막대 너비 변경(그래프를 마우스 오른쪽 버튼으로 클릭 > 사용자 지정), X축 레이블 제거(축을 두 번 클릭하고 레이블 선택 취소), 그래프 간격 변경( 빨간색 삼각형> 그래프 간격). 최종 그래프에 대한 스크립트는 다음과 같습니다.
Graph Builder(
Size( 799, 566 ),
Show Control Panel( 0 ),
Graph Spacing( 2 ),
Variables(
X( :Group ),
Y( :Total_Math_Physics ),
Y( :Total_Badminton_Football, Position( 1 ) ),
Y( :Data ),
Group X( :Student ),
Overlay( :Label )
),
Elements(
Position( 1, 1 ),
Bar( Y( 1 ), Y( 2 ), Overlay( 0 ), Legend( 5 ), Label( "Label by Value" ) )
),
Elements(
Position( 1, 2 ),
Bar(
X,
Y,
Legend( 4 ),
Bar Style( "Stacked" ),
Summary Statistic( "% of Factor" ),
Label( "Label by Value" )
)
),
SendToReport(
Dispatch(
{},
"Group",
ScaleBox,
{Min( -1.167069008972 ), Max( 2.147362067225 ), Inc( 1 ),
Minor Ticks( 0 ), Label Row( Show Major Labels( 0 ) )}
),
Dispatch(
{},
"Total_Math_Physics",
ScaleBox,
{Min( 0.23109243697479 ), Max( 55 ), Inc( 10 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Data",
ScaleBox,
{Min( 0 ), Max( 1.1209749344709 ), Inc( 0.2 ), Minor Ticks( 0 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Example" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 2 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 3 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 4 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 5 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 6 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);
이게 도움이 되길 바란다!
@줄리안
안녕 @라자트
귀하의 질문은 좋은 것이지만 JMP가 즉석에서 이것을 할 수 있다고 생각하지 않습니다.
출력을 생성하는 스크립트와 함께 첨부된 내 파일을 참조하십시오. 내 접근 방식은 저급 기술 솔루션에 가깝습니다. 각 주제에 대한 점유율을 계산하는 열과 부작용을 허용하는 (가짜) 행을 추가했습니다. 이 작업이 완료되면 환상을 완성하기 위해 그래프 속성에서 몇 가지 사항을 수정했습니다.
이것이 올바른 방향인지 알려주세요.
론
