2011-01-16 5 views
54

pylab.savefig 명령으로 원격 컴퓨터에서 그림을 생성하려고합니다. 도려내기로 원격으로 그림을 저장하는 방법은 무엇입니까?

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

가 어떻게 제대로 그림을 저장할 수 있습니다 는하지만 같은 오류가 발생했습니다?

+1

관련 항목 : http://stackoverflow.com/questions/2801882/generating-a-png-with-matplotlib-when-display-is-undefined?lq=1 –

답변

113

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

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

X 서버가 전혀 필요없이 플롯을 만들고 싶다면 대신 Aggbackend을 사용하십시오.

예. 이 같은 수행이 기본 동작하게하려면

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 file는 기본적으로 Agg 백엔드를 사용하여 수정할 수 있습니다.

this article for more information을 참조하십시오.

+1

나는 gerry와 같은 문제가 있었다. 나를 위해, Joe의 트릭만으로는 충분하지 않으며, 또한 ssh -X nos @ server를 할 필요가있었습니다.com 대신 그냥 – nos

+0

감사합니다. 이 솔루션은 다른 솔루션보다 더 분명합니다 .... – upendra

+0

안녕 조, 나는 음모의 일종을 가지고 있어요. 너와 같은 전문가의 조언이 필요해. 제발 좀 봐주세요. http://stackoverflow.com/questions/36248016/how-to-get-more-information-in-2nd-plot-by-clicking-1st-plot-using-python -clicki –

1

음, DISPLAY 변수를 올바르게 설정 하시겠습니까?

그래픽을 그릴 위치를 나타내는 DISPLAY 환경 변수가있는 클라이언트 (원격) 컴퓨터에서 X11을 사용하여 네트워크를 통해 그래픽 작업을 수행합니다. 일반적으로 mydesktop.example.com : 0과 같을 것입니다. 그러면 X11 프로그램이 무언가를 그리려고하면 네트워크를 통해 mydesktop.example.com으로 넘어갑니다. mydesktop.example.com은 앞에 앉아있는 컴퓨터입니다 (X 서버) 그리고 그것을 팝.

자, 여러분 앞에있는 머신이 Windows 인 경우, cygwin/X11 또는 상업용 eXceed에서 X 서버를 가져와야합니다.

또한 보안이 처리되는지 확인해야합니다. 네트워크를 통해 화면에 쓰는 사람이 없어야합니다.

어떻게 원격 컴퓨터에 연결하고 있습니까? 왜냐하면 리눅스 박스에서 ssh를 가진 다른 리눅스 박스로 간다면 단순한 해결책은 아마도 'ssh -X foo.example.com'을 사용하여 연결하는 것일 것입니다 - 이것은 로컬 소켓을 통해 X11 연결을 파이프합니다.

그렇다면 ssh -X가 답이 아니라면 관련 운영체제에 대한 정보를 좀 더 제공 할 수 있습니까?

+0

설명해 주셔서 감사합니다. 나는 윈도우즈에서 리눅스 머신을 ssh로하고있다. X11없이 그림을 만들 수 있습니까? – gerry

+0

화면에 나타나지 않도록 파일을 파일에 쓰고 파일을 Windows 상자에 복사해야합니다. 어쩌면 http://winswitch.org/을 제공 할 수 있습니다. 이것은 멋진 크로스 플랫폼 그래픽 재미를위한 쉬운 인터페이스입니다. – Spacedman

+0

"ssh -X username @ servername"을 내 리눅스 박스에서 다른 리눅스 박스로 옮겼다. –

관련 문제