개요
Matplotlib에서 행렬(matrix)의 값을 컬러맵(colormap)과 함께 시각화하려면 matshow() 함수와 text() 함수를 조합하면 됩니다. 이 글에서는 2차원 행렬 데이터를 색상 이미지로 표현하고, 각 셀의 중앙에 해당 값을 텍스트로 함께 출력하는 방법을 단계별로 살펴보겠습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- 그림과 서브플롯(subplots) 세트를 생성합니다.
- 행렬에 사용할 최댓값과 최솟값을 초기화합니다.
- matshow()를 사용해 2차원 행렬 또는 배열의 값을 색상으로 구분되는 이미지로 플롯합니다.
- 색상 이미지의 각 셀을 순회하면서 text()로 셀 중앙에 값을 배치합니다.
- show() 메서드를 호출하여 그림을 화면에 표시합니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
min_val, max_val = 0, 5
matrix = np.random.randint(0, 5, size=(max_val, max_val))
ax.matshow(matrix, cmap='ocean')
for i in range(max_val):
for j in range(max_val):
c = matrix[j, i]
ax.text(i, j, str(c), va='center', ha='center')
plt.show()코드 설명
plt.rcParams를 통해 그림 크기(7.50 x 3.50 인치)와 자동 레이아웃을 설정합니다. 이후 np.random.randint()로 0부터 4까지의 난수를 요소로 갖는 5x5 크기의 행렬을 생성합니다.
ax.matshow(matrix, cmap='ocean')은 행렬을 'ocean' 컬러맵 기반의 색상 이미지로 렌더링하며, 값의 크기에 따라 색상이 달라집니다. 마지막으로 이중 for문으로 행렬의 모든 셀을 순회하면서 ax.text()에 va='center', ha='center' 옵션을 지정해 각 값이 정확히 셀의 중앙에 오도록 배치합니다.
실행 결과
위 코드를 실행하면 'ocean' 컬러맵으로 표현된 5x5 행렬의 히트맵이 출력되고, 각 셀의 중앙에 해당 행렬 값이 함께 표시됩니다. 이를 통해 데이터의 분포를 색상과 숫자 두 가지 방식으로 직관적으로 파악할 수 있습니다.

