[tableau] Sankey Diagram

    최종 완성된 생키 차트


    생키 차트란? 

     

    흐름을 보여주는 시각화, 생키 다이어그램(Sankey Diagram) - 뉴스젤리 : 데이터 시각화 전문 기업

    익숙하지 않은 데이터 시각화 유형 생키 다이어그램, 이 데이터 시각화가 무엇인지부터 어떻게 활용하는지, 또 어떻게 읽어야 하는지 생키 다이어그램에 관한 모든 것을 데이터 시각화 전문 기

    newsjel.ly

     

    생키 다이어그램은 데이터의 흐름을 나타내는 데이터 시각화 유형의 하나.
    데이터의 이동이나 흐름을 시각적으로 강조하며 어떤 항목의 기여도가 높은지 파악하는데 효과적이다. 

     

     

    출처 : https://public.tableau.com/app/profile/ken.flerlage/viz/Sankey_25/Sankey 재가공

     

    추가적인 생키 차트의 특성, 활용 방안 등은 위에 첨부해 둔 생키차트 글을 참고 바랍니다.

     


     

    0. ideation : 어떻게 제작해볼까?

    따로 데이터를 가공하지 않고 슈퍼스토어 내장 데이터를 이용했습니다.

     

    생키차트를 여러 번 만들어봤지만 정리용으로 어떻게 정리해 두면 좋을까?라는 생각에 여러 가지 시도를 해보다가 마음에 드는 도시 5가지와 하위 범주 (상위 매출 10개)를 시작과 끝으로 잡아 생키차트를 제작하게 되었습니다.

     

    (생키 차트 특성상 너무 여러 가지의 갈래가 나오면 데이터 흐름 파악이 되지 않고 난잡해 보일 수 있기 때문에
    ideation 과정을 통해 무엇을 생키 차트로 보여줄지를 고민해 보았습니다.) 

     

     


    1. 데이터 유니온

    생키차트를 만드는 데 있어 가장 기본이 되는 과정입니다. 데이터 유니온이 되어야 생키를 만들 준비가 되었다고 할 수 있죠!

    슈퍼스토어-샘플을 불러오면 다음과 같이 화면이 보입니다. 저는 갈래로 나누어져 있는 데이터는 필요하지 않아 지우고 시작했습니다.

     

     

    이 상태에서 좌측에 위치한 주문 테이블을 끌어와 다음과 같이 유니온 시켜줍니다.

     

    21866개의 행으로 2개의 테이블이 합쳐진 것을 보실 수 있을 거예요! (기존 테이블 행의 수는 10933개)

    행의 수가 기존의 2배가 되면 성공입니다!


    2. 출발지 막대그래프, 도착지 막대그래프 만들기

    5개의 도시 ~ 상위 매출 10개의 하위 범주 제품으로 생키 차트를 만들고 싶기 때문에 필터를 적용시켜 줍니다.

    5개의 도시는 임의로 원하는 도시를 지정해 줬고, 하위 범주는 상위 매출 10위 지정해 줬습니다.

    매번 필터를 적용해 주는 것은 귀찮기 때문에 다음과 같이 설정도 해줄게요! 

     

     

    여기까지는 데이터의 특성에 맞게 만들고 싶은 생키를 위해 설정한 과정이니 따라 하실 필요는 없는 과정입니다. 

     

    출발점이 되는 막대와 도착점이 되는 막대는 다음과 같이 만들어줬습니다!

     


    3. Sankey 핵심 부분 만들기

    1) topad 계산필드 만들기

    IF [테이블 이름] = ‘주문’ then 1 else 49 END

     

    → 유니온 한 시트는 자동으로 ‘주문 1’이라는 이름이 부여되기 때문에 ‘주문’과 ‘주문1’ 시트를 구분하는 과정입니다!

     

    → 만든 topad 필드를 차원값을 변경해 준 뒤, 구간차원값을 만들어줍니다!

     

     

    여러 생키차트 만드는 방법을 보면 'topad 변수를 차원값으로 변경한 후 구간차원을 제작한다'라고 나와있는데 제작하면서 큰 오류가 없어서 바로 구간차원 값 만들어줬습니다. 무슨 차이인지 정확히는 잘 모르겠습니다...

     

    2) t 계산필드 만들기

    (INDEX()-25)/4

     

    3) sigmoid 계산필드 만들기

    1/(1+EXP(1)^-[t])

    4) start, end 계산필드 만들기

    RUNNING_SUM(SUM([매출]))/TOTAL(SUM(매출))

    → end는 start랑 식이 같아서 복제해서 이름만 변경해 줬습니다!

    5) curve 계산필드 만들기

    [start]+([end]-[start])*[sigmoid]

    6) 열 : t / 행 : curve / 세부정보 : topad(구간차원), 도시[출발지], 하위범주[도착지] 설정하기

     

    7) 열에 있는 t를 ‘topad(구간차원)’으로 계산해 주기

     

    8) 행에 있는 curve 테이블 계산 편집해 주기 🌟

     

    테이블 계산을 각 필드마다 해줄 때, 특정 차원에서 배열된 순서가 중요합니다!

    start의 경우 출발점 → 도착점 → topad(구간차원) 순으로,

    end의 경우 도착점 → 출발점 → topad(구간차원) 순으로,

    t의 경우 topad(구간차원)이 가장 상위로 오게 하고, 해당 차원만 선택합니다.

     

    9) 표현방식 : 라인 / 경로 : topad(구간차원) 설정하기

    10) line(선굵기) 계산필드 만들어주기 / line 계산필드를 크기에 넣고 ‘topad(구간차원)’로 계산

     

    11) 축 범위 편집하기 (t 축: -5 ~ 5 , curve 축: 0 ~ 1)

     

    12) ‘하위범주’를 색상에 넣고 끝 막대와 색상 동일하게 설정하기

     

    13) 축 머리글 및 시트 서식 제거, 대시보드에 차트 올리기 (+도구 설명도 편집)

    댓글