Python

[파이썬] 벌집 Hexbin 그래프 시각화와 Plotly 대체 방법: matplotlib vs plotly

weweGH 2025. 7. 4. 09:00
반응형

벌집 그래프 시각화
벌집 그래프 시각화


벌집 Hexbin 그래프 시각화와 Plotly 대체 방법: matplotlib vs plotly


들어가며


 

히트맵 벌집 그래프(Hexbin plot)는 2차원의 평면을 육각형으로 그리드를 나누고, 각 셀에 해당하는 값을 색으로 표현하는 그래프입니다. 점의 밀도를 시각적으로 보여줌으로써 데이터의 분포나 군집을 파악할 때 매우 효과적입니다.

이 글에서는 파이썬의 matplotlib plotly을 활용하여 히트맵 벌집 그래프를 그리는 방법을 소개합니다. 2가지 방법의 가장 큰 차이점은 bin의 형태입니다. matplotlib은 육각형, plotly는 사각형으로 시각화합니다. 


예제 데이터

이 글에서 예제로 활용할 데이터는 sciki-learn의 iris 데이터입니다. 먼저, 필요한 패키지를 import합니다.

import pandas as pd
from sklearn.datasets import load_iris

iris = load_iris()

df = pd.DataFrame(iris.data, columns=iris.feature_names)
df.head()

iris 데이터셋
iris 데이터셋



matplotlib을 활용한 시각화


matplotlib을 활용한 히트맵 벌집 그래프는 hexbin 메서드를 활용합니다. 꽃받침 길이(sepal length)꽃잎 길이(petal length)에 대한 데이터 count를 색상으로 표시하겠습니다.

hexbin 옵션 중 gridsizex축 방향의 육각형 개수를 의미하며, y축 방향의 육각형 개수는 자동으로 비율에 따라 맞춰집니다. 즉, girdsize=20은 x축 방향의 20개의 육각형을 의미합니다. cmap은 색상을 설정하는 옵션입니다.

import matplotlib.pyplot as plt

x = df['sepal length (cm)']
y = df['petal length (cm)']

plt.figure(figsize=(8, 6))
hb = plt.hexbin(x, y, gridsize=20, cmap='YlOrRd')
plt.colorbar(hb, label='Counts')

plt.xlabel('Sepal length (cm)')
plt.ylabel('Petal length (cm)')
plt.title('Hexbin Plot of Sepal vs Petal Length')
plt.show()

matplotlib
matplotlib


plotly를 활용한 시각화


plotlypx.density_heatmap() 메서드를 사용합니다. x축과 y축을 정방형 그리드로 나누어 사각형 셀마다 값을 계산합니다. 위와 동일하게 꽃받침 길이(sepal length) 꽃잎 길이(petal length)에 대한 데이터 count를 색상으로 표시하겠습니다.

옵션 중 nbinsx, nbinsy는 각각 x, y축 방향의 bin 개수를 설정합니다. 값이 클수록 세밀하게, 작을수록 큰 셀로 시각화합니다. color_continuous_scale은 색상 스케일을 지정합니다. 'Viridis', 'Plasma' 등 다양한 색상으로 설정할 수 있습니다.

import plotly.express as px

fig = px.density_heatmap(
    df,
    x='sepal length (cm)',
    y='petal length (cm)',
    nbinsx=20,  # x축 bin 수
    nbinsy=20,  # y축 bin 수
    color_continuous_scale='YlOrRd',
    title='Density Heatmap of Sepal vs Petal Length (Plotly)'
)

fig.update_layout(width=700, height=500)
fig.show()

plotly
plotly


반응형