Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Matplotlib에서 subplot·imshow 사용 시 흰색 테두리(여백) 제거하는 방법

Python의 Matplotlib에서 subplotimshow()를 사용해 이미지를 출력하면 그림 주변에 불필요한 흰색 테두리(여백)가 생기는 경우가 많습니다. 이는 기본적으로 활성화되는 축(axis)의 여백과 자동 레이아웃 패딩 때문인데, 아래 단계를 따르면 이러한 테두리를 깔끔하게 제거할 수 있습니다.

흰색 테두리 제거 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 패딩을 조정합니다.
  • NumPy를 이용해 무작위 데이터 포인트를 생성합니다.
  • np.shape()로 데이터의 크기를 구합니다.
  • 데이터의 가로세로 비율에 맞게 그림 크기를 인치 단위로 설정합니다.
  • 그림 전체 영역을 차지하는 축(axes) 인스턴스를 생성합니다.
  • set_axis_off()로 축과 눈금을 끕니다.
  • add_axes()로 그림에 해당 축을 추가합니다.
  • imshow()로 데이터를 2D 래스터 이미지 형태로 표시합니다.
  • show() 메서드로 최종 결과를 화면에 출력합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

data = np.random.randint(0, 50, (50, 50))
sizes = np.shape(data)

fig = plt.figure()
fig.set_size_inches(1. * sizes[0] / sizes[1], 1, forward=False)

ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()

fig.add_axes(ax)
ax.imshow(data)

plt.show()

핵심 포인트 정리

흰색 테두리가 생기는 주된 원인은 축의 기본 여백과 그림의 자동 레이아웃 패딩입니다. 위 예제에서는 plt.Axes(fig, [0., 0., 1., 1.])처럼 축이 그림 전체 영역(0% ~ 100%)을 꽉 채우도록 좌표를 지정하고, set_axis_off()로 눈금과 라벨을 제거했습니다. 여기에 fig.set_size_inches()를 사용해 그림 크기를 데이터의 가로세로 비율에 맞추면 이미지가 왜곡 없이 그림 영역 전체를 채우게 되어 테두리 없는 깔끔한 이미지를 얻을 수 있습니다.

출력 결과

위 코드를 실행하면 다음과 같이 흰색 테두리 없이 이미지가 그림 영역을 가득 채운 결과를 확인할 수 있습니다.

Python Matplotlib에서 subplot·imshow 사용 시 흰색 테두리(여백) 제거하는 방법Python Matplotlib에서 subplot·imshow 사용 시 흰색 테두리(여백) 제거하는 방법