🖥️ IT, 컴퓨터/📁 데이터 분석

[데이터 시각화] Sankey 다이어그램이란? / 파이썬 Plotly로 그리는 코드

김 홍시 2024. 7. 23.
반응형

Sankey 다이어그램은 데이터 흐름을 시각화하는 데 사용되는 다이어그램입니다. 이 다이어그램은 특히 에너지, 자금, 물자 등의 흐름을 나타내는 데 유용하며, 각 흐름의 크기를 직관적으로 이해할 수 있도록 도와줍니다. Sankey 다이어그램은 노드(노드 사이의 점)와 링크(노드를 연결하는 화살표)로 구성되어 있으며, 링크의 두께는 흐름의 크기를 나타냅니다.

 

파이썬에서는 여러 라이브러리를 사용하여 Sankey 다이어그램을 만들 수 있습니다. 그 중 가장 일반적으로 사용되는 라이브러리는 plotlymatplotlib입니다. plotly 라이브러리를 사용하여 Sankey 다이어그램을 만드는 방법을 설명하겠습니다.

Plotly를 사용한 Sankey 다이어그램 만들기

1. 라이브러리 설치
먼저 Plotly 라이브러리를 설치해야 합니다. 터미널에서 다음 명령어를 실행하여 설치할 수 있습니다

pip install plotly

2. Sankey 다이어그램 생성
다음은 Plotly를 사용하여 Sankey 다이어그램을 생성하는 예제 코드입니다:

import plotly.graph_objects as go

# 노드와 링크 데이터를 정의합니다.
nodes = ["Source 1", "Source 2", "Intermediate 1", "Intermediate 2", "Destination 1", "Destination 2"]
links = [
    {"source": 0, "target": 2, "value": 8},
    {"source": 1, "target": 2, "value": 4},
    {"source": 1, "target": 3, "value": 2},
    {"source": 2, "target": 4, "value": 6},
    {"source": 3, "target": 4, "value": 2},
    {"source": 3, "target": 5, "value": 2}
]

# 노드 인덱스와 색상 설정
node_labels = [node for node in nodes]
node_colors = ["blue", "blue", "green", "green", "red", "red"]

# 링크의 소스, 타겟, 값 설정
link_source = [link["source"] for link in links]
link_target = [link["target"] for link in links]
link_value = [link["value"] for link in links]

# Sankey 다이어그램 생성
fig = go.Figure(data=[go.Sankey(
    node=dict(
        pad=15,
        thickness=20,
        line=dict(color="black", width=0.5),
        label=node_labels,
        color=node_colors
    ),
    link=dict(
        source=link_source,
        target=link_target,
        value=link_value
    )
)])

fig.update_layout(title_text="Sankey Diagram Example", font_size=10)
fig.show()

 

 

이 코드는 "Source 1", "Source 2"에서 출발하여 "Intermediate 1", "Intermediate 2"를 거쳐 "Destination 1", "Destination 2"로 가는 흐름을 나타내는 Sankey 다이어그램을 생성합니다. 노드와 링크의 데이터는 리스트 형식으로 제공되며, 각 링크의 소스, 타겟, 값을 정의하여 다이어그램을 구성합니다.

위의 예제를 실행하면 웹 브라우저에서 Sankey 다이어그램을 볼 수 있습니다. Plotly는 인터랙티브한 시각화를 제공하므로, 다이어그램을 마우스로 드래그하거나 클릭하여 세부 정보를 확인할 수 있습니다.

반응형

댓글