developer tip

pylab으로 원격으로 Figure를 저장하는 방법은 무엇입니까?

copycodes 2020. 10. 29. 08:16
반응형

pylab으로 원격으로 Figure를 저장하는 방법은 무엇입니까?


이 질문에 이미 답변이 있습니다.

명령을 사용하여 원격 컴퓨터에서 그림을 생성하려고합니다 pylab.savefig. 하지만 다음과 같은 오류가 발생했습니다.

Unable to access the X Display, is $DISPLAY set properly?

그림을 제대로 저장하려면 어떻게해야합니까?


기본적으로 matplotlib는 TkAgg백엔드 와 같은 것을 사용합니다 . 이를 위해서는 X 서버가 실행 중이어야합니다.

X- 포워딩 만 사용할 수 있지만 matplotlib가 원격 X- 서버와 연결을 시도 할 때 눈에 띄는 지연이 있습니다. 플롯과 상호 작용할 필요가 없으면 X 연결을 완전히 피하여 속도를 높이는 것이 더 좋습니다.

X 서버가 전혀 필요하지 않고 플롯을 만들고 싶다면 대신 Agg 백엔드사용하십시오 .

예를 들어 다음과 같이하십시오.

import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot(range(10))
fig.savefig('temp.png')

이것이 기본 동작이되도록하려면 기본적으로 백엔드 를 사용하도록 matplotlibrc 파일수정할 수 있습니다 Agg.

자세한 내용은 이 문서를 참조하십시오 .


DISPLAY 변수를 적절한 값으로 설정해보십시오.

X11을 사용하는 네트워크를 통한 그래픽은 그래픽을 그릴 위치를 나타내는 DISPLAY 환경 변수가있는 클라이언트 (원격) 컴퓨터에서 작동합니다. 일반적으로 mydesktop.example.com:0.0과 같습니다. X11 프로그램이 무언가를 그리려고하면 네트워크를 통해 mydesktop.example.com으로 이동합니다. 서버) 팝업이 나타납니다.

이제 앞에있는 컴퓨터가 Windows라면 어딘가에서 X 서버를 가져와야합니다. cygwin / X11 또는 상업용 eXceed가 잘 작동합니다.

또한 보안이 처리되었는지 확인해야합니다. 네트워크를 통해 누군가가 화면에 글을 쓰도록 할 수는 없습니다.

원격 시스템에 어떻게 연결하고 있습니까? Linux 상자에서 ssh를 사용하여 다른 Linux 상자로 이동하는 경우 간단한 해결책은 'Use ssh -X foo.example.com'으로 연결하는 것입니다. 이것은 로컬 소켓을 통해 X11 연결을 파이프합니다.

ssh -X가 답이 아니라면 관련된 운영 체제에 대한 더 많은 정보를 얻을 수 있습니까?

참고 URL : https://stackoverflow.com/questions/4706451/how-to-save-a-figure-remotely-with-pylab

반응형