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"라는 이름으로 다음과 같은 플롯이 저장됩니다.

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