GUI 환경이 없는 원격 서버에서 Python으로 그래프를 작업할 때는 화면에 표시하는 대신 이미지 파일로 저장해야 합니다. 이때 pyplot 패키지의 savefig() 메서드를 사용하면 지정한 경로에 그림(figure)을 손쉽게 저장할 수 있습니다.
핵심 포인트
- 원격 서버처럼 디스플레이가 없는 환경에서는 Agg 백엔드를 사용해야 합니다.
- 백엔드 설정은 반드시
pyplot을 임포트하기 이전에 수행해야 합니다. savefig()메서드에 파일 경로와 파일명을 지정하여 원격 위치에 이미지를 저장합니다.
구현 단계
- 다른 백엔드를 사용하려면
matplotlib.use('Agg')메서드로 백엔드를 먼저 설정합니다. plot()메서드로 선 그래프를 그립니다.savefig()메서드에 저장할 디렉터리 경로를 넣어 이미지를 원격 위치에 저장합니다.- 로컬 환경이라면
plt.show()로 그림을 화면에 표시할 수도 있습니다.
예제 코드
import matplotlib
matplotlib.use('Agg') # GUI 없이 동작하는 백엔드 설정
from matplotlib import pyplot as plt
plt.plot([1, 2, 3])
plt.savefig("remotely_fig.png") # 현재 디렉터리에 PNG 파일로 저장실행 결과
위 코드를 실행하면 스크립트가 위치한 디렉터리에 remotely_fig.png라는 이름의 이미지 파일이 생성되며, 값 1, 2, 3을 연결하는 간단한 선 그래프가 저장됩니다.
추가 팁
- 저장 경로 지정:
plt.savefig('/path/to/directory/figure.png')처럼 절대 경로나 상대 경로를 모두 사용할 수 있습니다. - 해상도 조절:
plt.savefig('fig.png', dpi=300)옵션으로 고해상도 이미지를 저장할 수 있습니다. - 다양한 파일 형식: 확장자에 따라 PNG, PDF, SVG 등 다양한 형식으로 저장됩니다.
- Jupyter 환경 주의: 노트북에서는 셀 상단의
%matplotlib inline매직 명령이 백엔드 설정보다 우선 적용될 수 있으므로 순서에 유의해야 합니다.