import plotly.graph_objects as go
import numpy as np
# 샘플 데이터 생성
np.random.seed(0)
z = np.random.rand(10, 10)  # 10x10 행렬 데이터 생성
# Heatmap 생성
fig = go.Figure(data=go.Heatmap(z=z, colorscale='Viridis'))
# 그래프 출력
fig.show()Plotly Heatmap 만들기
Heatmap은 데이터의 패턴이나 분포를 시각적으로 표현하는 데 유용한 도구입니다. 데이터의 강도나 밀도를 색상으로 나타내어, 복잡한 데이터의 관계를 직관적으로 파악할 수 있습니다.
Plotly를 사용하면 인터랙티브하고 아름다운 Heatmap을 쉽게 만들 수 있습니다. 이 블로그 글에서는 Plotly를 이용해 Heatmap을 만드는 방법과, Heatmap에 적합한 데이터 유형에 대해 설명하겠습니다.
1. Heatmap에 적합한 데이터 유형
Heatmap은 주로 다음과 같은 데이터 유형에서 유용하게 사용됩니다:
- 행렬 데이터: 데이터가 두 개의 범주형 변수(예: 시간과 장소, 제품과 고객 등)를 기준으로 배열된 경우. 예를 들어, 매출 데이터가 월과 지역별로 배열된 경우.
- 시계열 데이터: 시간에 따른 데이터의 변화가 두 개의 변수로 나누어져 있는 경우. 예를 들어, 월별 온도 변화가 여러 지역에서 측정된 경우.
- 밀도 데이터: 두 개의 연속형 변수 간의 밀도 분포를 나타내는 경우. 예를 들어, 인구 밀도나 특정 행동의 빈도.
2. Plotly를 사용한 Heatmap 생성
Plotly는 Heatmap을 만들기 위한 plotly.graph_objects와 plotly.express 모듈을 제공합니다. 이 두 가지 방법 모두 다양한 스타일과 옵션을 지원하여 인터랙티브한 Heatmap을 생성할 수 있습니다.
2.1. plotly.graph_objects를 사용한 Heatmap
plotly.graph_objects 모듈을 사용하면 더 세밀한 조정이 가능하며, Heatmap의 속성들을 개별적으로 설정할 수 있습니다.
기본 Heatmap
- z: Heatmap의 데이터. 이 배열의 각 값이 색상으로 매핑됩니다.
- colorscale: 색상 스케일을 설정합니다.- 'Viridis',- 'Cividis',- 'Blues'등 다양한 옵션이 있습니다.
축 레이블과 색상바 추가
import plotly.graph_objects as go
import numpy as np
# 샘플 데이터 생성
np.random.seed(0)
z = np.random.rand(10, 10)
x = [f'X{i}' for i in range(10)]
y = [f'Y{i}' for i in range(10)]
# Heatmap 생성
fig = go.Figure(data=go.Heatmap(z=z, x=x, y=y, colorscale='Blues'))
# 레이아웃 업데이트
fig.update_layout(
    title='Sample Heatmap',
    xaxis_title='X Axis Label',
    yaxis_title='Y Axis Label',
)
# 그래프 출력
fig.show()- x: x축의 레이블을 설정합니다.
- y: y축의 레이블을 설정합니다.
- coloraxis_colorbar: 색상바의 제목을 설정합니다.
2.2. plotly.express를 사용한 Heatmap
plotly.express는 간단한 API를 제공하며, 데이터프레임에서 Heatmap을 쉽게 생성할 수 있습니다.
데이터프레임을 사용한 Heatmap
import plotly.graph_objects as go
import pandas as pd
import numpy as np
# 샘플 데이터프레임 생성
np.random.seed(0)
df = pd.DataFrame(np.random.rand(10, 10), columns=[f'Col{i}' for i in range(10)])
# Heatmap 데이터 준비
heatmap_data = df.values
x_labels = df.columns
y_labels = df.index
# Heatmap 생성
fig = go.Figure(data=go.Heatmap(z=heatmap_data,
                               x=x_labels,
                               y=y_labels,))
# 그래프 레이아웃 업데이트
fig.update_layout(title='Heatmap using plotly.graph_objects',
                  xaxis_title='Features',
                  yaxis_title='Samples')
# 그래프 출력
fig.show()- px.imshow: DataFrame 또는 2D 배열을 사용하여 Heatmap을 생성합니다.
- color_continuous_scale: 색상 스케일을 설정합니다.
색상 스케일의 기본 개념
Plotly에서 Heatmap의 색상 스케일(colorscale)은 데이터의 값에 색상을 매핑하여 시각적으로 표현합니다.
Heatmap에서는 이 색상 스케일을 사용하여 데이터의 값을 시각적으로 인식할 수 있습니다.Plotly는 다음과 같은 색상 스케일을 지원합니다:
- Viridis: viridis
- Magma: magma
- Inferno: inferno
- Plasma: plasma
- Cividis: cividis
- Blues: Blues
- Greens: Greens
- Reds: Reds
- YlOrBr: YlOrBr
- YlOrRd: YlOrRd
- Oranges: Oranges
- Purples: Purples
- Greys: Greys
- Jet: Jet
- Hot: Hot
# Heatmap 생성
fig = go.Figure(data=go.Heatmap(z=heatmap_data,
                               x=x_labels,
                               y=y_labels,
                               colorscale='Greens',
                               colorbar=dict(title='Intensity')))
# 그래프 출력
fig.show()3. Heatmap의 활용 예시
- 데이터 분석: 다양한 변수 간의 상관관계나 패턴을 시각적으로 분석할 때.
- 비즈니스 인사이트: 매출, 고객 행동 등의 데이터를 시간과 지역별로 분석하여 인사이트를 도출할 때.
- 기술적 시각화: 실험 결과, 센서 데이터 등의 밀도를 시각적으로 표현할 때.
4. 결론
Plotly를 사용하면 Heatmap을 매우 간편하게 생성하고, 다양한 데이터 유형을 시각화할 수 있습니다. plotly.graph_objects와 plotly.express 모듈을 활용하여, 데이터의 패턴과 관계를 효과적으로 시각화하고 분석할 수 있습니다.
데이터의 강도나 밀도를 색상으로 표현하여, 복잡한 정보를 직관적으로 파악할 수 있게 해줍니다.