Matplotlib의 서브플롯(subplot)에서 서로 다른 이미지를 실제 크기 그대로 나란히 표시하고 싶다면, 몇 가지 간단한 단계만 거치면 됩니다. 이 글에서는 두 개의 이미지를 하나의 Figure 안에 각각의 서브플롯으로 배치하는 방법을 코드 예제와 함께 살펴보겠습니다.
구현 단계
- Figure 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 자동으로 조정합니다.
- imread() 메서드를 사용해 두 개의 이미지(im1, im2)를 읽어옵니다.
- Figure와 서브플롯 집합을 생성합니다.
- 두 서브플롯 모두에서 축(axis)을 비활성화하여 이미지만 깔끔하게 보이도록 합니다.
- imshow() 메서드를 사용해 im1과 im2 데이터를 화면에 표시합니다.
- show() 메서드를 호출하여 최종 Figure를 출력합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
im1 = plt.imread("bird.jpg")
im2 = plt.imread("opencv-logo.png")
fig, ax = plt.subplots(nrows=1, ncols=2)
ax[1].axis('off')
ax[1].imshow(im1, cmap='gray')
ax[0].axis('off')
ax[0].imshow(im2, cmap='gray')
plt.show()코드 설명
plt.rcParams 설정을 통해 Figure 크기를 7.50 x 3.50 인치로 지정하고, figure.autolayout 옵션을 활성화하면 요소들이 겹치지 않도록 여백이 자동 조절됩니다. plt.imread()는 JPG, PNG 등 다양한 포맷의 이미지 파일을 NumPy 배열 형태로 불러오며, 이 배열을 imshow()에 전달하면 해당 서브플롯에 이미지가 렌더링됩니다.
cmap='gray'는 컬러 이미지를 흑백(그레이스케일)으로 변환하여 표시하는 옵션입니다. 원본 색상을 유지하고 싶다면 이 인자를 생략하면 됩니다. 또한 axis('off')를 호출하면 눈금과 축 레이블이 제거되어 이미지 영역만 표시되므로, 이미지 비교나 시각화 시 훨씬 깔끔한 결과물을 얻을 수 있습니다.
실행 결과
위 코드를 실행하면 하나의 Figure 안에 두 개의 서브플롯이 가로로 배치되고, 각 서브플롯에는 지정한 이미지가 실제 픽셀 크기 비율대로 출력됩니다.