샌키 플롯 색상 할당안녕하세요 JMP 커뮤니티 여러분,
Sankey Plot에서 모든 시퀀스에 동일한 색상 범주를 적용한 경험이 있으신가요? 제가 겪었던 어려움은 각 시퀀스의 색상 범주가 달라서 동일한 색상이 적용된 시퀀스 1에서 2, ..., n으로의 항목 변화를 추적하기 어려웠다는 점입니다.
감사합니다!
기본 데이터 분석 및 모델링데이터 탐색 및 시각화윈도우Re: Sankey 플롯 색상 할당안녕하세요 @qunw ,
커뮤니티에 오신 것을 환영합니다!
범주별로 색상이 구분되어 있어 평행 좌표 플롯이 목표 달성에 도움이 될 것 같습니다. 자세한 내용은 https://www.jmp.com/support/help/ko/18.2/#page/jmp/parallel-plots.shtml 에서 확인하세요.
@jthi 가 만든 Enhanced Sankey Plot(ESP)도 확인할 수 있습니다: https://community.jmp.com/t5/JMP-Add-Ins/Enhanced-Sankey-Plot-ESP/ta-p/549745
이러한 옵션이 도움이 되기를 바랍니다.
Re: Sankey 플롯 색상 할당안녕하세요 @qunw , 귀하가 경험한 문제의 (익명화된) 예를 게시해 주시겠습니까?
저는 Sankey 플롯을 사용하여 프로세스 흐름 동안 "속성"의 상태 변화를 모니터링할 수 있기를 바랍니다.
예를 들어 합격과 불합격을 다르게 분류하는 것입니다.
Sankey 플롯에서 색상은 범주별 값을 나타내는 것이 아니라 "그룹"을 나타냅니다. (다이어그램 왼쪽의 빨간색은 오른쪽의 빨간색과 같은 데이터 테이블 행이며, 플롯의 다른 모든 곳에 해당합니다.) 이것이 " 각 시퀀스가 다른 색상 범주를 가졌다 "는 말로 설명한 내용입니까?
결과적으로 아래 예에서 파란색은 왼쪽에서는 0이 될 수 있고, 중앙과 오른쪽에서는 파란색이 될 수 있습니다.

반면에, 줄거리의 진행 방식을 볼 때, 모든 "1"에 같은 색상을 주는 것은 의미가 없습니다.
하지만 복잡한 Sankey 플롯에서 1을 "찾는" 방법은 무엇일까요?
만약 색깔이 같지 않다면?
안타깝게도: 라벨만 봐도 그렇습니다!
그리고 "상태" 변화를 찾는 방법 - 예를 들어 0에서 1로 -> "육안으로"는 거의 불가능 - 뇌 보조 프로세서에 큰 부하를 주는 방식으로 작동합니다.
연속형 값에 대한 Sankey 플롯과 다른 점:

... 명목 모델링 유형의 열의 경우 동일한 값이 Y축을 따라 서로 다른 위치에 있을 수 있습니다.
이로 인해 명목값을 갖는 Sankey 플롯의 "상태" 변화를 감지하는 것이 매우 어렵습니다.
명목 모드에서 동일한 높이에 동일한 값을 갖는 준 "연속 모드"로 전환하는 옵션이 있을 수 있지만 "튜브" 너비로 "인구"를 추적하는 멋진 추가 기능이 있습니다.
이 모드를 활성화하려는 바람이 있습니다: 병렬 플롯: 동기화된 축
현재 해결 방법은 다음과 같습니다.
(가)연속값을 사용합니다.
Re: Sankey 플롯 색상 할당사용성 외에도 미적인 측면도 있습니다.
저축 , 주택 및 기타 건물이 왜 위쪽으로 구부러져 있습니까? 왜 한 높이에 머물지 않습니까?
오른쪽 하단에 충분한 (빈) 공간이 있습니다.

Re: Sankey 플롯 색상 할당Victor, 참고 자료 감사합니다! 환자 치료 프로파일링의 Sankey Plot에 평행 좌표 플롯을 사용했는데, 치료 순서에서 동일한 요법에 동일한 색상을 지정하는 것이 어렵습니다. 평행 플롯 지침에 포함된 두 가지 예시는 제 사례와 정확히 유사하지 않으므로, 치료 전반에 걸쳐 색상 설정을 동기화하기 위해 추가 코딩이 필요할 수 있습니다.
Re: Sankey 플롯 색상 할당Hogi님, 이 질문에 도움을 주시고 예시를 공유해 주셔서 정말 감사합니다! 환자 치료 프로파일링을 위해 Sankey 플롯을 사용했고, 치료 순서에서 동일한 요법에 동일한 색상을 할당해 보았습니다. 제 경우도 예시와 매우 유사합니다. "각 순서가 다른 색상 범주를 가졌다"는 제 설명은 맞았습니다. x축의 "값 1, 2, 3"은 "치료 1, 2, 3"과 같고, "값 0, 1, 2"는 치료별 요법과 같습니다. 각 "값 1, 2, 3"에서 0, 1, 2의 색상 설정을 동기화 하고 싶습니다. 여기서 "1"은 빨간색, "2"는 녹색, "0"은 값 1, 2, 3에서 파란색입니다. 이렇게 하면 환자의 치료 과정을 이해하는 데 도움이 될 것입니다. 이 문제에 대한 해결책이 있다면 알려주시면 감사하겠습니다.

Re: Sankey 플롯 색상 할당커뮤니티 게시물에서 이 그래프를 알게 되었는데, 관련 질문을 시각화하는 또 다른 방법, 예를 들어 초기 치료와 이후 치료에서 각 요법의 다양성을 추적하는 방법을 제공했습니다. '자동차', '주택', '세금' 등 Outflow 1의 동일한 값에서 나온 경우, Outflow 1의 값을 접두사로 사용하여 다음 Outflows의 각 값에 레이블을 지정하여 그래프를 생성하는 방법을 알아냈습니다. 이 작업을 위해서는 약간의 데이터 전처리가 필요합니다. 더 나은 방법을 찾으셨으면 좋겠습니다. 감사합니다!
Re: Sankey 플롯 색상 할당
@qunw 님 이 쓰셨습니다:
"값 1, 2, 3" 각각에서 0, 1, 2의 색상 설정을 동기화하고 싶습니다. 여기서 "1"은 빨간색, "2"는 녹색, "0"은 값 1, 2, 3에 걸쳐 파란색입니다.
알겠습니다.
저는 Sankey 플롯으로는 이것이 가능하지 않을 것 같다고 생각합니다(의도된 바도 아닙니다).
Re: Sankey 플롯 색상 할당GraphBuilder에서는 행 상태나 색상 드롭존을 통해 색상을 지정할 수 있습니다.
두 경우 모두 색상은 '행별로' 정의됩니다.
따라서 플롯에서 궤적을 선택하면 특정 행이 선택됩니다. 궤적의 색상은 이 행의 색상에 따라 결정됩니다. 궤적 하나당 하나의 색상이 적용됩니다.

더 보기...
New Table( "treatment",
Add Rows( 9 ),
New Column( "patient",
Character,
Set Values(
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8"}
)
),
New Column( "treatment 1",
"Nominal",
Set Values( [1, 1, 1, 2, 2, 2, 3, 3, 3] )
),
New Column( "treatment 2",
"Nominal",
Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] )
),
New Column( "treatment 3",
"Nominal",
Set Values( [1, 1, 2, 1, 2, 3, 3, 3, 3] )
)
)
Re: Sankey 플롯 색상 할당같은 행에 대해 다른 색상을 얻으려면 스크립팅을 사용하거나 행을 분할해야 합니다.
행을 분할합니다. 표를 쌓습니다.
current data table << Stack( columns( :treatment 1, :treatment 2, :treatment 3 ));
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Label ), Y( :patient ), Color( :Data ) ),
Elements( Heatmap( X, Y, Legend( 4 ) ) )
);

Re: Sankey 플롯 색상 할당히트맵 플롯에는 모든 정보가 담겨 있습니다. 하지만 인간의 뇌가 이를 "이해"하기 위해 얼마나 많은 공동 처리가 필요한지 놀라울 정도입니다.
Sankey 플롯에 더 가깝습니다. 처리 과정은 색상과 y축을 따라 위치로 표시됩니다.
-> 공동 처리가 덜 필요함 - 육안으로 정보를 보는 것이 훨씬 쉬워짐.

모든 궤적이 하나의 플롯에 있는 Sankey에 더 가깝습니다.
그래프가 너무 복잡해져서 특정 궤적을 따라가는 게 더 이상 불가능해집니다.

Re: Sankey 플롯 색상 할당정말 맞는 말씀이에요!
Re: Sankey 플롯 색상 할당맞습니다. Sankey 플롯은 여전히 프로필 추적을 위한 가장 좋은 시각화 방법일 것입니다.
Re: Sankey 플롯 색상 할당평행 플롯: 동기화된 축 의 제안은 어떨까요?
동일한 "값"을 식별하려면 같은 "Y" 위치를 사용합니다.
이 옵션은 모델링 유형이 "연속"(명목형 아님)인 열에 대해 이미 사용할 수 있습니다.
더 보기 좋은 그래프를 얻으려면 선 너비를 조정할 수 있습니다.
불행히도 선 너비를 사용하여 분수/인구를 표현할 수 있는 방법은 없습니다.
색상은 다른 유형의 정보를 식별하는 데 사용될 수 있습니다.
초기 치료:

다양한 치료법:

dt = New Table( "treatment",
Add Rows( 9 ),
New Column( "patient",
Character,
Set Values(
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8"}
)
),
New Column( "treatment 1",
//"Nominal",
Set Values( [1, 1, 1, 2, 2, 2, 3, 3, 3] )
),
New Column( "treatment 2",
//"Nominal",
Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] )
),
New Column( "treatment 3",
//"Nominal",
Set Values( [1, 1, 2, 1, 2, 3, 3, 3, 3] )
)
);
//this functionality is only available for scripters.<BR />//via the GUI, a user can create the equation manually
dt << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Underscore" ),
Columns( :treatment 1, :treatment 2, :treatment 3 )
) << Run Formulas;
Graph Builder(
Size( 568, 240 ),
Show Control Panel( 0 ),
Summary Statistic( "Median" ),
Graph Spacing( 4 ),
Variables(
X( :treatment 1 ),
X( :treatment 2, Position( 1 ) ),
X( :treatment 3, Position( 1 ) ),
Color( :"Concatenate[treatment 1,treatment 2,treatment 3]"n )
),
Elements(
Parallel( X( 1 ), X( 2 ), X( 3 ) )
)
);