데이터 시각화에서 히트맵(heatmap)은 행렬 형태의 데이터를 색상으로 직관적으로 표현할 수 있는 강력한 도구입니다. 특히 Seaborn 라이브러리의 sns.heatmap() 함수는 각 셀에 숫자 값을 함께 표시하는 주석(annot) 기능을 제공하며, fmt 파라미터를 통해 이 숫자의 출력 형식을 자유롭게 지정할 수 있습니다.
이 글에서는 Seaborn 히트맵의 주석 형식을 설정하는 방법을 단계별로 살펴보겠습니다.
히트맵 주석 형식 설정 단계
- 그림 크기 설정: 먼저 figure 크기를 지정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- 데이터프레임 생성: Pandas를 사용해 5개의 열(a, b, c, d, e)을 가진 데이터프레임을 만듭니다.
- 히트맵 그리기:
sns.heatmap()으로 데이터를 색상 인코딩된 행렬로 시각화합니다. 이때fmt=".2%"가 바로 주석의 표시 형식을 결정합니다. - 그래프 출력:
plt.show()메서드로 최종 결과를 화면에 표시합니다.
fmt 파라미터란?
fmt는 Python 문자열 포매팅 규칙을 따르며, 대표적인 옵션은 다음과 같습니다.
".2f"— 소수점 둘째 자리까지 고정 소수점으로 표시 (예: 0.53)".2%"— 백분율로 변환해 소수점 둘째 자리까지 표시 (예: 53.12%)"d"— 정수 형태로 표시
이 예제에서는 fmt=".2%"를 사용하므로, 0~1 사이의 난수 값이 백분율 형태로 각 셀에 표시됩니다.
전체 예제 코드
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 그림 크기 및 자동 레이아웃 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 5x5 난수 데이터프레임 생성
df = pd.DataFrame(np.random.random((5, 5)), columns=["a", "b", "c", "d", "e"])
# 히트맵 그리기: 주석 표시, 폰트 크기 7, 백분율 형식 적용
sns.heatmap(df, annot=True, annot_kws={"size": 7}, fmt=".2%")
plt.show()코드 설명
annot=True: 각 셀에 해당하는 수치 값을 텍스트로 표시합니다.annot_kws={"size": 7}: 주석 텍스트의 폰트 크기를 7포인트로 지정합니다. 값이 많을 때는 폰트를 줄여 가독성을 확보하는 것이 좋습니다.fmt=".2%": 주석 값을 백분율 형식(소수점 둘째 자리)으로 변환해 표시합니다.
실행 결과
코드를 실행하면 5×5 크기의 히트맵이 생성되고, 각 셀에는 색상 농도에 대응하는 값이 백분율 형식(예: 42.37%)으로 함께 표시됩니다. 색상이 진할수록 값이 크고, 연할수록 값이 작음을 한눈에 파악할 수 있습니다.
마무리
Seaborn 히트맵에서 annot과 fmt 옵션을 활용하면 색상 정보만으로는 전달하기 어려운 정확한 수치를 함께 보여줄 수 있습니다. 상관관계 분석, 피벗 테이블 시각화 등 다양한 상황에서 fmt 형식을 상황에 맞게 조절해 보세요.