pbj0812의 코딩 일기

[PYTHON] floweaver 를 이용한 sankey 그래프 그리기 본문

ComputerLanguage_Program/PYTHON

[PYTHON] floweaver 를 이용한 sankey 그래프 그리기

pbj0812 2021. 8. 10. 00:42

0. 목표

 - floweaver 를 이용한 sankey 그래프 그리기

1. 실습

 1) library 설치

  - chrome 에서 실습할 것, safari 에서는 위젯 표출 시 에러 발생

!pip install ipysankeywidget
!pip install floweaver

 2) 데이터 생성

  - source : 어디에서

  - target : 어디로

  - type : 무엇을

  - value : 얼마만큼 보내는가

flows = pd.DataFrame({
    'source' : ['A', 'B', 'A', 'B', 'A', 'C', 'B', 'D', 'A', 'A'],
    'target' : ['a1', 'a1', 'a2', 'a1', 'a3', 'a5', 'a4', 'a2', 'a3', 'a3'],
    'type' : ['pv', 'pv', 'pv', 'pv', 'pv', 'pv', 'pv', 'pv', 'pv', 'pv'],
    'value' : [1, 3, 7, 3, 10, 12, 45, 38, 2, 11]
    })

 3) 그룹화

  - floweaver 를 사용하기 위해서는 중복된 데이터가 있으면 안되기에 그룹화 실시

flows2 = flows.groupby(by = ['source', 'target', 'type']).agg({'value' : sum})
flows2.reset_index(inplace = True)

 4) 그림 그리기

  - 튜토리얼에서는 records 를 입력하나, 어떤 문자를 넣어야 되는지는 잘 모르겠음... 아무 문자나 넣으면 또 안됨...

SankeyWidget(links=flows2.to_dict('r'))

  - 마우스를 그래프에 올려놓으면 해당 흐름의 정보가 표출

2. 참고

 - Could not create model #11

 - Sankey-view Documentation

 - Creating Beautiful Sankey Diagrams with floWeaver

 - ricklupton/floweaver

Comments