변수 별 군집 막대 차트안녕 모두
이것은 간단한 질문처럼 들릴 수 있지만이 작업을 수행하는 방법을 찾지 못했습니다.
여러 샘플에 대해 테스트를 실행하고 각 샘플에 대해 테스트는 샘플을 구성하는 세 가지 구성 요소의 백분율을 출력합니다.
4 개의 열이있는 데이터 테이블을 설정했습니다. 하나는 샘플 이름이고 다른 하나는 3 개의 구성 요소 백분율입니다.
첨부 된 그림 (Excel에서 완료)과 같이 클러스터 된 막대 차트를 만들려고합니다. 데이터는 3 개의 구성 요소에 해당하는 3 개의 다른 클러스터로 그룹화됩니다.
모든 구성 요소 열을 먼저 쌓을 수 있습니다 ( "변수 별 클러스터링"참조). 여기 ); 그러나 그것은 매우 긴 테이블로 만들고 탐색하기가 어렵습니다 (각각 다른 구성 요소를 출력하는 여러 유형의 테스트가 있습니다). 또한 탐색하기 쉬운 원래 데이터 형식과 클러스터 된 막대 차트에 대한 두 개의 별도 테이블이 필요합니다.
나는 이것을 해결하기 위해 두 가지 다른 방법을 생각하고 있습니다.
1) 각 테스트에 대해 각 구성 요소의 결과를 나란히 표시하십시오. 모두 같은 y 축을 공유 할 수있는 방법이 있습니까?
2) 열 누적 방법을 사용하면 두 테이블을 하나로 결합하여 클릭하면 자동으로 클러스터 된 막대 차트를 생성하는 저장된 테이블을 원본 테이블에 저장할 수있는 방법이 있습니까? 누적 테이블을 생성하는 스크립트를 저장할 수 있지만 클러스터 막대 차트를 다시 만들어야한다는 것을 알고 있습니다.
감사합니다!
다시 : 변수 별 군집 막대 차트간단한 Stack과 Graph Builder로 그래프를 재현 할 수있었습니다.

Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :Label ),
X( :Sample, Position( 1 ) ),
Y( :Data ),
Overlay( :Sample )
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 33 ) ) ),
SendToReport(
Dispatch(
{},
"Label",
ScaleBox,
{Label Row( 1, {Automatic Tick Marks( 0 ), Show Major Labels( 0 )} )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);
다시 : 변수 별 군집 막대 차트감사합니다!
JMP에서 스크립팅을 한 적이 없지만 원래 테이블의 스택 스크립트와 스택 테이블의 그래프 작성기 스크립트를 약간 수정하여 하나로 통합하여 작동시킬 수있었습니다. 새 테이블을 계속 생성해야하지만 최소한 하나의 테이블 만 유지해야합니다.
내 인생을 더 쉽게 만들기 위해 JMP에서 스크립트를 배우는 것을 시작해야 할 것 같습니다.
호기심에서 JMP에는 사용자 인터페이스에서 수행 한 작업을 스크립트에 "기록"할 수있는 기능이 있습니까?
다시 : 변수 별 군집 막대 차트대답은 '예'입니다.
내가 게시 한 JSL은 주로 JMP가 작성했습니다. 실행하는 모든 플랫폼 및 수행하는 각 File ==> Tables 작업은 대화식으로 작성된 데이터 테이블 또는 디스플레이를 재생성하는 JSL을 표시합니다.
스태킹하여 새 데이터 테이블을 만들면 새 테이블의 "소스"항목에 데이터 테이블을 생성 할 JSL이 포함됩니다.
Graph Builder Platform의 경우 빨간색 삼각형으로 이동하여 "스크립트 저장"을 선택하면 그래프를 다시 생성하는 스크립트가 제공됩니다.
다시 : 변수 별 군집 막대 차트나는 당신이 말한 것을 얻었고 그것이 바로 테이블 스태킹 스크립트와 그래프 빌더 스크립트를 결합한 것입니다.
방금 두 개가 아닌 여러 작업을 수행 해야하는 경우 (예 : 두 번째 테이블에서 여러 그래프 생성)를 요구하는 것입니다. 그들. 그것이 필요하다는 것을 말하지 않고, JMP에 그러한 기능이 있는지 궁금합니다.
다시 : 변수 별 군집 막대 차트JMP 방법은 데이터 조작과 함께 각 그래프에서 스크립트를 가져 와서 단일 스크립트에 배치하는 것입니다.
스크립트를 데이터 테이블에 저장하는 줄을 따라 생각하는 것처럼 들립니다. 그것은 내가 나타내는 것이 아닙니다. 테이블 조작 스크립트 및 플랫폼 저장 스크립트를 새 스크립트 창에 저장하려고합니다.
다시 : 변수 별 군집 막대 차트그래, 네가 무슨 뜻인지 잘못 해석 한 것 같아
"에서 더 확장 할 수 있습니까? 테이블 조작 스크립트 및 플랫폼 저장 스크립트 "비트?
방금 찾은 것 중 하나는 실제로 데이터 테이블의 전체 스크립트를 복사 할 수 있다는 것입니다. 그래서 이것만으로도 현재 필요한 것에 충분해야합니다. 여전히 개별 보고서를 데이터 테이블에 새 스크립트로 저장해야하지만 이제는 개별적으로가 아니라 동시에 모든 보고서를 복사 할 수 있습니다.
다시 : 변수 별 군집 막대 차트스크립트 작성 방법을 설명하는 방법으로이 토론에서 제공 한 스크립트를 작성하기 위해 수행 한 작업을 살펴 보겠습니다.
- 데이터 테이블을 제공하지 않았으므로 고유 한 예제 데이터 테이블을 만들어야했습니다.
- 예제 데이터 테이블의 사본을 제공하고 싶었으므로 테이블을 저장 및로드하거나 스크립트에 포함시키는 것이 가장 좋은지 결정해야했습니다. 크기가 매우 작기 때문에 스크립트를 넣기로 결정했습니다.
- 그래서 스크립트 창을 열었습니다.
- 수동으로 입력했습니다
Names Default to Here(1);
일반적으로 모든 스크립트의 첫 번째 문장이어야합니다. 이 스크립트의 JSL 변수가이 스크립트와 분리되어 다른 스크립트를 방해하지 않도록합니다.
- 그런 다음 내가 만든 데이터 테이블로 이동하여 테이블 패널에서 빨간색 삼각형을 클릭하고 "테이블 스크립트 복사"를 선택했습니다. 그러면 현재 존재하는 테이블을 생성 할 스크립트를 붙여 넣기 버퍼에 배치했습니다.
- 그런 다음 스크립트 창으로 돌아가서 첫 번째 줄 바로 아래의 스크립트에 붙여 넣었습니다.
Names Default to Here(1);<BR />
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
또한 테이블 정의 앞에 dt =를 추가하여 "data table ("example ")"에 대한보다 공식적인 참조가 아닌 "dt"로이 데이터 테이블을 참조 할 수 있습니다.
- 그런 다음 데이터 테이블 및 그래프 빌더와 대화식으로 재생하여 원하는 그래프를 생성하기 위해 수행해야 할 작업을 파악했습니다. 이것은 반복적 인 방법론으로, 원하는 결과를 얻을 때까지 여러 데이터 테이블 조작 및 그래프 빌더 실행이 필요했습니다.
- 결과에 만족하면 결과를 얻는 데 무엇이 필요한지 살펴 보았습니다. 데이터를 스태킹하는 간단한 테이블 조작이었고, 그런 다음 스택 된 데이터에서 그래프 빌더가 실행되었습니다.
- 먼저 스크립트 코드를 얻어야했습니다. 이 코드는 누적 데이터 테이블의 테이블 패널에서 쉽게 사용할 수 있습니다. 테이블 패널에서 "소스"항목 앞의 녹색 삼각형을 마우스 오른쪽 버튼으로 클릭하면 "편집"을 선택할 수 있습니다. 이 데이터 테이블을 재 작성하는 데 사용할 수있는 JSL이 표시됩니다. 스크립트 창에서 이미 존재하는 JSL 직후에 모든 코드를 선택하고 붙여 넣기 버퍼에 복사했습니다.
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
스택 "dtStack ="에 대한 포인터를 추가하고 원래 데이터 테이블에 대한 긴 참조를 ""dt "의 짧은 참조로 바꿨습니다.
- 다음으로 Graph Builder 출력으로 가서 빨간색 삼각형을 클릭하고 "Save Script ==> To Clipboard"를 선택했습니다.
- 그런 다음 클립 보드 (붙여 넣기 버퍼)를 스크립트에 붙여 넣었습니다.
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :Label ),
X( :Sample, Position( 1 ) ),
Y( :Data ),
Overlay( :Sample )
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 33 ) ) ),
SendToReport(
Dispatch(
{},
"Label",
ScaleBox,
{Label Row( 1, {Automatic Tick Marks( 0 ), Show Major Labels( 0 )} )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);
Graph Builder 문 앞에 "dtStack <<"을 추가했습니다. 이것이 그래프 빌더가 원래 코드가 아닌 누적 데이터에서 실행되도록하는 가장 좋은 방법입니다.
이것이 결합 된 스크립트를 만드는 데 사용되는 프로세스입니다. 상상할 수 있듯이 원래 데이터 테이블 ( "dt")을 사용하거나 스택 데이터 테이블 ( "dtStack")을 사용하여 이러한 스크립트에 다양한 플랫폼을 추가 할 수 있습니다. 추가해야 할 다른 데이터 테이블 조작 등이있을 수도 있습니다.
대량 복사, 데이터 테이블에 저장 한 스크립트와 관련하여 나는 그렇게 할 수 있다는 것을 알지 못하지만 그 자체로는 문제가 없었습니다. 대부분의 경우, 나는 내 자신의 데이터 분석을 수행하지 않고 스크립트를 작성하려고합니다.
다시 : 변수 별 군집 막대 차트명확하게하기 위해 JMP의 모든 작업을 단일 스크립트로 기록 할 수있는 방법이 없습니다. JMP에서는 불가능하지만 Excel에서는 이러한 방식으로 매크로를 기록 할 수 있습니다.
대신 작은 빨간색 삼각형을 클릭하고 스크립트 저장 옵션 중 하나를 선택하여 JMP에서 실행하는 모든 플랫폼의 JSL에 액세스 할 수 있습니다.
다시 : 변수 별 군집 막대 차트짐,
귀하의 코드를 안내해 주셔서 감사합니다. 지금 상황을 분명히하십시오. 빠른 질문-새 누적 테이블에 여러 작업을 추가하려면 모든 작업을 수행하기 전에 계속 호출해야합니까? 누적 테이블에서 히스토그램을 그리려면 다음 줄을 추가하면됩니다.
dtStack << Distribution( Continuous Distribution( Column( :Data ) ) );
다시 : 변수 별 군집 막대 차트감사! 그것이 내가 궁금했던 것입니다. 당신이 말했듯이 각 작업에 대한 스크립트에 액세스 할 수 있기 때문에 큰 문제는 아닙니다.