파이썬의 Matplotlib를 활용하면 여러 개의 그래프를 하나의 화면에 나란히 배치하여 동시에 비교할 수 있습니다. 이 글에서는 numpy로 생성한 임의 데이터를 서로 다른 컬러맵(cmap)으로 네 개의 서브플롯에 병렬로 시각화하는 방법을 단계별로 알아보겠습니다.
구현 단계
- numpy를 사용하여 랜덤 데이터를 생성합니다.
- subplot() 함수로 현재 figure에 서브플롯을 추가합니다. 행(nrows)=1, 열(ncols)=4 구조에서 인덱스=1 위치에 배치합니다.
- imshow() 메서드와 cmap="Blues_r" 옵션을 사용해 데이터를 2D 래스터 이미지로 표시합니다.
- 인덱스=2 위치에 서브플롯을 추가하고 cmap="Accent_r" 컬러맵으로 이미지를 출력합니다.
- 인덱스=3 위치에는 cmap="terrain_r" 컬러맵을 적용합니다.
- 인덱스=4 위치에는 cmap="twilight_shifted_r" 컬러맵을 적용합니다.
- 마지막으로 show() 메서드를 호출하여 전체 그림을 화면에 표시합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True data = np.random.rand(5, 5) plt.subplot(1, 4, 1) plt.imshow(data, cmap="Blues_r") plt.subplot(1, 4, 2) plt.imshow(data, cmap="Accent_r") plt.subplot(1, 4, 3) plt.imshow(data, cmap="terrain_r") plt.subplot(1, 4, 4) plt.imshow(data, cmap="twilight_shifted_r") plt.show()
코드 설명
위 코드에서 plt.rcParams["figure.figsize"]는 그림(figure)의 가로·세로 크기를 인치 단위로 지정하며, figure.autolayout=True 설정은 축 레이블이나 제목이 잘리지 않도록 레이아웃을 자동으로 조정해 줍니다.
np.random.rand(5, 5)는 0~1 사이의 균등 분포 난수로 이루어진 5×5 크기의 2차원 배열을 생성합니다. subplot(행, 열, 인덱스)는 그리드 형태로 영역을 나눈 뒤 해당 인덱스 위치에 그래프를 그리도록 지정하는 함수입니다. 즉, subplot(1, 4, n)은 한 줄에 네 개의 칸을 만들고 그중 n번째 칸에 그래프를 배치한다는 의미입니다.
imshow()는 2차원 배열 데이터를 이미지처럼 렌더링하는 함수로, cmap 매개변수를 바꾸면 같은 데이터라도 전혀 다른 색감으로 표현할 수 있습니다. 이 예제에서는 Blues_r, Accent_r, terrain_r, twilight_shifted_r 네 가지 컬러맵을 사용해 하나의 데이터를 다양한 스타일로 비교했습니다.
실행 결과
