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

Matplotlib에서 그림을 래스터 이미지로 PDF에 저장하는 방법

Matplotlib에서 생성한 그림을 PDF 파일로 저장할 때, 벡터가 아닌 래스터(raster) 이미지 형태로 저장해야 하는 경우가 있습니다. 예를 들어 대용량의 이미지 데이터를 포함한 플롯은 벡터 방식으로 저장하면 파일 크기가 지나치게 커질 수 있기 때문입니다. 이때 rasterized=True 옵션을 사용하면 간단하게 해결할 수 있습니다.

구현 단계

  • 그림 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
  • 새 그림(figure)을 생성하거나 기존 그림을 활성화합니다.
  • 서브플롯 배치의 일부로 그림에 축(axes)을 추가하며, 이때 rasterized=True 옵션을 지정합니다.
  • NumPy를 사용하여 무작위 데이터를 생성합니다.
  • imshow()를 통해 데이터를 2D 정규 래스터 위에 이미지로 표시합니다.
  • 플롯을 PDF 형식으로 저장합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

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

fig = plt.figure()
ax = fig.add_subplot(111, rasterized=True)
data = np.random.rand(5, 5)

ax.imshow(data, cmap="copper", aspect=True, interpolation="nearest")

plt.savefig("rasterized.pdf")

실행 결과

위 코드를 실행하면 프로젝트 디렉터리에 "rasterized.pdf"라는 이름으로 다음과 같은 플롯이 저장됩니다.

Matplotlib에서 그림을 래스터 이미지로 PDF에 저장하는 방법

핵심 포인트

여기서 중요한 부분은 fig.add_subplot(111, rasterized=True) 구문입니다. rasterized=True 옵션을 축(axes)에 적용하면 해당 축에 그려지는 내용이 PDF로 저장될 때 자동으로 래스터 이미지로 변환됩니다. 반면 텍스트나 좌표축 등의 요소는 여전히 벡터 형식으로 유지되므로, 확대해도 선명함을 잃지 않으면서 파일 크기도 효율적으로 관리할 수 있습니다.