Seaborn으로 히트맵을 그릴 때 각 셀에 표시되는 주석(annotation) 값에 단위를 함께 나타내고 싶은 경우가 있습니다. 예를 들어 비율 데이터라면 % 기호를 붙여 가독성을 높일 수 있는데요. 이번 글에서는 히트맵 주석에 단위를 추가하는 방법을 단계별로 살펴보겠습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 사이와 주변 여백을 조정합니다.
- NumPy를 사용하여 5×5 크기의 난수 행렬을 생성합니다.
sns.heatmap()으로 행렬 데이터를 색상으로 인코딩된 히트맵으로 시각화합니다.- 주석 값을 백분율(%) 단위로 표시하도록 설정합니다.
plt.show()메서드로 결과 그림을 화면에 출력합니다.
예제 코드
import matplotlib.pyplot as plt import seaborn as sns import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True data = np.random.rand(5, 5) ax = sns.heatmap(data, annot=True, fmt='.1f', square=1, linewidth=1.) for t in ax.texts: t.set_text(t.get_text() + " %") plt.show()
핵심 포인트 설명
이 코드에서 가장 중요한 부분은 마지막 반복문입니다. sns.heatmap()에 annot=True를 지정하면 각 셀에 숫자가 표시되는데, 이때 표시된 텍스트 객체들은 ax.texts에 저장됩니다. 이 텍스트들을 하나씩 순회하면서 t.get_text()로 기존 값을 가져오고, 문자열 뒤에 " %"를 붙인 후 t.set_text()로 다시 설정하면 모든 셀의 주석에 단위가 자동으로 추가됩니다.
또한 fmt='.1f' 옵션은 소수점 첫째 자리까지 표시하도록 숫자 형식을 지정하며, square=1은 셀을 정사각형으로 만들고, linewidth=1.은 셀 사이에 경계선을 그려줍니다.
실행 결과
코드를 실행하면 5×5 크기의 히트맵이 그려지고, 각 셀에는 소수점 한 자리 숫자와 함께 % 기호가 표시된 것을 확인할 수 있습니다. 이 방법은 온도(°C), 개수 등 다른 단위에도 동일하게 적용할 수 있어 활용 범위가 넓습니다.