Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Seaborn에서 두 개의 히트맵(Heatmap) 결합하는 방법

데이터 분석 시 서로 다른 데이터셋을 나란히 비교해야 할 때, 두 개의 히트맵을 한 화면에 결합하여 시각화하면 매우 유용합니다. Python의 대표적인 시각화 라이브러리인 SeabornMatplotlib를 활용하면 손쉽게 구현할 수 있습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이 및 주변 여백(padding)을 조정합니다.

  • 두 개의 Pandas 데이터프레임(DataFrame)을 생성합니다.

  • 하나의 그림과 두 개의 서브플롯(ax1, ax2)을 생성합니다.

  • ax1ax2에 각각 사각형 데이터를 색상으로 인코딩된 행렬 형태의 히트맵으로 플롯합니다.

  • 눈금(ticks)과 눈금 레이블(ticklabels)이 존재하는 경우, 오른쪽 축으로 이동시킵니다.

  • 서브플롯 사이 여백 너비가 평균 축 너비 대비 최소한이 되도록 조정하여, 두 히트맵이 마치 하나처럼 붙어 보이게 만듭니다.

  • 그림을 화면에 표시하려면 show() 메서드를 사용합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

df1 = pd.DataFrame(np.random.rand(10, 4), columns=list("ABCD"))
df2 = pd.DataFrame(np.random.rand(10, 4), columns=list("WXYZ"))

fig, (ax1, ax2) = plt.subplots(ncols=2)
fig.subplots_adjust(wspace=0.01)

sns.heatmap(df1, cmap="plasma", ax=ax1, cbar=False)
sns.heatmap(df2, cmap="hot", ax=ax2, cbar=False)

ax2.yaxis.tick_right()

fig.subplots_adjust(wspace=0.001)
plt.show()

실행 결과

위 코드를 실행하면 두 개의 히트맵이 거의 붙은 상태로 하나의 그림 안에 나란히 출력됩니다.

Seaborn에서 두 개의 히트맵(Heatmap) 결합하는 방법

핵심 포인트 정리

cbar=False 옵션을 사용해 각 히트맵의 컬러바를 제거하면 두 그래프가 자연스럽게 이어져 보입니다. 또한 wspace 값을 0에 가깝게 설정하고, 오른쪽 히트맵의 y축 눈금을 yaxis.tick_right()로 오른쪽 바깥쪽에 배치하면 마치 하나의 통합된 히트맵처럼 깔끔하게 표현할 수 있습니다. 필요에 따라 서로 다른 컬러맵(cmap)을 적용해 데이터 특성을 더욱 명확하게 구분할 수도 있습니다.