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

Matplotlib/Seaborn 히트맵의 특정 셀에 사용자 정의 테두리 추가하기

데이터 시각화에서 특정 셀이나 영역을 강조하고 싶을 때가 있습니다. 이 글에서는 Matplotlib와 Seaborn으로 생성한 히트맵 플롯의 특정 셀에 사용자 정의 테두리를 추가하는 방법을 단계별로 살펴봅니다. 클러스터맵(clustermap)처럼 복잡한 구조의 플롯에서도 사각형 패치(Rectangle patch)를 활용하면 원하는 위치에 손쉽게 테두리를 그릴 수 있습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 간의 안팎 여백을 조정합니다.
  • 일부 열을 포함하는 데이터프레임을 생성합니다.
  • sns.clustermap()을 사용해 행렬 데이터셋을 계층적 군집화 히트맵으로 시각화합니다.
  • g.ax_heatmap을 통해 히트맵 축 객체를 가져옵니다.
  • 테두리 색상을 지정하기 위해 border_color 변수를 초기화합니다.
  • 사용자 정의 테두리 색상을 적용한 사각형 패치를 히트맵 축 위에 추가합니다.
  • show() 메서드를 호출하여 최종 그림을 화면에 표시합니다.

예제 코드

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

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

df = pd.DataFrame({"col1": [1, 4, 2, 3, 5], "col2": [3, 4, 1, 5, 2]})

g = sns.clustermap(df, figsize=(7.50, 3.50))
ax = g.ax_heatmap

border_color = "yellow"
ax.add_patch(plt.Rectangle((1, 2), 2, 1, fill=False,
                           edgecolor=border_color, lw=5))

plt.show()

핵심 포인트

여기서 가장 중요한 부분은 plt.Rectangle((1, 2), 2, 1, ...)입니다. 첫 번째 인수인 (1, 2)는 사각형의 왼쪽 아래 모서리 좌표(x, y)를 의미하며, 이어지는 21은 각각 너비와 높이입니다. 즉, 이 코드는 x축 방향으로 2칸, y축 방향으로 1칸에 해당하는 셀들을 감싸는 테두리를 그립니다.

fill=False 옵션은 사각형 내부를 투명하게 유지하여 히트맵의 색상이 그대로 보이도록 하고, edgecolor는 테두리 색상을, lw(line width)는 테두리 선의 두께를 결정합니다. 색상과 두께 값을 조절하면 강조 효과를 자유롭게 변경할 수 있습니다.

실행 결과

Matplotlib/Seaborn 히트맵의 특정 셀에 사용자 정의 테두리 추가하기