데이터 분석이나 머신러닝 작업을 하다 보면 NumPy 배열을 이미지 형태로 시각화해야 하는 경우가 자주 있습니다. Matplotlib의 imshow() 함수를 사용하면 2차원 배열을 손쉽게 히트맵 형태의 이미지로 표현할 수 있습니다. 이 글에서는 단계별로 그 방법을 알아보겠습니다.
구현 단계
- 먼저 figure 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
- np.array를 사용하여 2차원 데이터 래스터(raster)를 생성합니다.
imshow()메서드로 데이터를 2D 정규 래스터 위에 이미지 형태로 표시합니다.- 마지막으로
show()메서드를 호출하여 figure를 화면에 출력합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt # figure 크기 및 자동 레이아웃 설정 plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True # 2차원 데이터 배열 생성 data = np.array( [[0.1, 0.7, 0.6, 0.3], [0.2, 0.6, 0.5, 0.2], [0.8, 0.3, 0.80, 0.01], [0.3, 0.4, 0.2, 0.1]] ) # 데이터를 이미지로 표시 plt.imshow(data, interpolation="nearest", cmap="RdYlGn_r") plt.show()
코드 설명
위 예제에서 사용된 주요 파라미터는 다음과 같습니다.
- interpolation="nearest": 각 픽셀 값을 그대로 표시하되 인접한 값으로 보간하지 않습니다. 데이터의 원래 값을 정확하게 확인할 때 유용합니다.
- cmap="RdYlGn_r": 색상 맵(colormap)을 지정합니다. 'RdYlGn_r'은 빨강(Red)에서 노랑(Yellow), 초록(Green)으로 이어지는 색상 맵의 역순 버전으로, 낮은 값은 빨간색에 가깝고 높은 값은 초록색에 가깝게 표현됩니다.
실행 결과
코드를 실행하면 4×4 크기의 2차원 배열이 색상이 입혀진 격자 형태의 이미지로 출력됩니다. 각 셀의 값에 따라 색이 다르게 표시되므로, 데이터의 분포와 패턴을 한눈에 파악할 수 있습니다.
추가 팁
실무에서는 plt.colorbar()를 함께 사용하면 각 색상이 어떤 값 범위를 나타내는지 확인할 수 있어 더욱 유용합니다. 또한 cmap 값을 'viridis', 'hot', 'coolwarm' 등으로 변경하여 데이터 특성에 맞는 시각화 스타일을 선택할 수 있습니다.