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

DISPLAY 환경 없이 matplotlib의 pyplot을 사용하는 방법

그래픽 디스플레이(DISPLAY)가 없는 서버나 터미널 환경에서도 matplotlib의 pyplot을 사용할 수 있습니다. 핵심은 그림(figure)을 화면에 띄우지 않고 파일로 저장하면 된다는 점입니다.

해결 방법

plt.show()를 호출하지 않고 savefig() 메서드를 사용하여 현재 그림을 로컬 머신에 이미지 파일로 저장하면 됩니다. 이렇게 하면 디스플레이 없이도 시각화 결과물을 얻을 수 있으며, 필요할 때 저장된 이미지를 열어 확인할 수 있습니다.

구현 단계

  • figure 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • numpy를 사용하여 x 데이터 포인트를 생성합니다.
  • plot() 메서드로 xy 데이터 포인트를 그립니다.
  • savefig() 메서드를 사용하여 그림을 이미지 파일로 저장합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

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

x = np.linspace(-np.pi, np.pi, 100)

plt.plot(x, np.sin(x) * x, c='red')

plt.savefig("myimage.png")

실행 결과

위 코드를 실행하면 프로젝트 디렉터리에 "myimage.png"라는 이름으로 다음과 같은 이미지가 저장됩니다.

DISPLAY 환경 없이 matplotlib의 pyplot을 사용하는 방법

추가 팁

디스플레이가 전혀 없는 원격 서버 환경에서는 matplotlib 백엔드를 'Agg'로 명시적으로 지정하는 것이 좋습니다. 코드 상단에 다음과 같이 작성하면 됩니다:

import matplotlib
matplotlib.use('Agg')

'Agg' 백엔드는 화면 출력 없이 파일 생성만 담당하므로, DISPLAY 환경 변수가 설정되어 있지 않아도 오류 없이 동작합니다. 이는 CI/CD 파이프라인이나 클라우드 서버에서 배치 작업으로 그래프를 생성할 때 특히 유용합니다.