데이터 분석 시 서로 다른 데이터셋을 나란히 비교해야 할 때, 두 개의 히트맵을 한 화면에 결합하여 시각화하면 매우 유용합니다. Python의 대표적인 시각화 라이브러리인 Seaborn과 Matplotlib를 활용하면 손쉽게 구현할 수 있습니다.
구현 단계
그림(figure) 크기를 설정하고, 서브플롯 사이 및 주변 여백(padding)을 조정합니다.
두 개의 Pandas 데이터프레임(DataFrame)을 생성합니다.
하나의 그림과 두 개의 서브플롯(ax1, ax2)을 생성합니다.
ax1과 ax2에 각각 사각형 데이터를 색상으로 인코딩된 행렬 형태의 히트맵으로 플롯합니다.
눈금(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()실행 결과
위 코드를 실행하면 두 개의 히트맵이 거의 붙은 상태로 하나의 그림 안에 나란히 출력됩니다.

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