Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 월간결산
- 딥러닝
- 통계학
- 서평
- 텐서플로
- 서평단
- Google Analytics
- python visualization
- MySQL
- Visualization
- 한빛미디어서평단
- MATLAB
- 파이썬 시각화
- tensorflow
- 리눅스
- Pandas
- Python
- Tistory
- 한빛미디어
- matplotlib
- 블로그
- SQL
- 티스토리
- Ga
- Linux
- 시각화
- Blog
- 독후감
- 매틀랩
- 파이썬
Archives
- Today
- Total
pbj0812의 코딩 일기
[PYTHON] plotly 를 이용하여 sankey diagram 그리기(+ 색상 추가) 본문
ComputerLanguage_Program/PYTHON
[PYTHON] plotly 를 이용하여 sankey diagram 그리기(+ 색상 추가)
pbj0812 2023. 10. 19. 02:420. 목표
- plotly 를 이용하여 sankey diagram 그리기(+ 색상 추가)
1. 실습
1) library 호출
import plotly.graph_objects as go
import pandas as pd
import matplotlib.colors as mcolors
2) 데이터 생성
df = pd.DataFrame({
'source' : ['A1', 'A1', 'A2', 'B1', 'B2'],
'target' : ['B1', 'B2', 'B2', 'C1', 'C1'],
'value' : [8, 2, 4, 8, 4]
})
3) 라벨 만들기
label = pd.DataFrame({
'name' : ['A1', 'A2', 'B1', 'B2', 'C1'],
'code' : [0, 1, 2, 3, 4]
})
4) 색상 추가
- mcolors 에서 제공해주는 색상 정보를(dict 형태) list 형태로 변환하여 키 값만 가져온 뒤 라벨의 개수에 맞게 매핑(알파벳 순으로 매핑됨)
label['color'] = list(mcolors.CSS4_COLORS)[:len(label)]
5) 데이터에 매핑
dict_sido = label.set_index('name')['code'].to_dict()
dict_sido2 = label.set_index('name')['color'].to_dict()
df['source2'] = df['source'].map(dict_sido)
df['target2'] = df['target'].map(dict_sido)
df['color2'] = df['source'].map(dict_sido2)
6) 그림 그리기
fig = go.Figure(data=[go.Sankey(
node = dict(
pad = 30, # 바 사이의 간격
thickness = 40, # 바의 굵기
line = dict(color = "blue", width = 0.5), # 선 관리
label = ["A1", "A2", "B1", "B2", "C1"],
color = label['color'] # 바 색상
),
link = dict(
source = df['source2'], # 어디에서, 0 : A1, 2 : A2
target = df['target2'], # 어디로
value = df['value'], # 얼만큼 보내는가
color = df['color2'] # line 색상
))])
fig.update_layout(title_text="Basic Sankey Diagram", font_size=20)
fig.show()
2. 결과
3. 참고 문헌
'ComputerLanguage_Program > PYTHON' 카테고리의 다른 글
[PYTHON] 튜플 namedtuple (0) | 2024.03.21 |
---|---|
[PYTHON] 튜플 언패킹 (0) | 2024.03.20 |
[PYTHON] plotly 를 통해 sankey diagram 그리기 (0) | 2023.10.18 |
[PYTHON] OpenCV 를 활용한 그래프의 y 좌표 구하기 (0) | 2023.09.13 |
[PYTHON] PyScript 로 그림 그리기 (0) | 2023.02.06 |
Comments