IT story

X 서버를 실행하지 않고 matplotlib 그래프 생성

hot-time 2020. 5. 26. 07:47
반응형

X 서버를 실행하지 않고 matplotlib 그래프 생성


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

Matplotlib은 실행중인 X 서버를 의미하는 $ DISPLAY 환경 변수가 필요한 것 같습니다.
일부 웹 호스팅 서비스는 X 서버 세션 실행을 허용하지 않습니다.
X 서버를 실행하지 않고 matplotlib을 사용하여 그래프를 생성하는 방법이 있습니까?

[username@hostname ~]$ python2.6
Python 2.6.5 (r265:79063, Nov 23 2010, 02:02:03)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/pyplot.py", line 270, in figure
    **kwargs)
  File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager
    window = Tk.Tk()
  File "/usr/local/lib/python2.6/lib-tk/Tkinter.py", line 1643, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
>>>

@ Neil의 대답은 그것을 수행하는 하나의 (완전히 유효한!) 방법이지만 가져 오기 전에 전화 matplotlib.use('Agg') matplotlib.pyplot 한 다음 정상적으로 계속할 수도 있습니다.

예 :

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

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

Agg 백엔드도 사용할 필요가 없습니다. PDF, PS는, SVG는 AGG는 카이로 및 GDK 백엔드는 전혀 X 서버없이 사용할 수있다. 그러나 기본적으로 Agg 백엔드 만 빌드되므로 (여기서 생각하십니까?) 특정 설치에서 다른 백엔드를 사용하지 못할 가능성이 높습니다.

또는 .matplotlibrc파일 에서 백엔드 매개 변수를 설정 matplotlib.pyplot하여 지정된 렌더러 를 자동으로 사용할 있습니다.


pylab 인터페이스를 거치지 않고 matplotlib API를 직접 사용해야합니다. 여기 좋은 예가 있습니다.

http://www.dalkescientific.com/writings/diary/archive/2005/04/23/matplotlib_without_gui.html

참고 URL : https://stackoverflow.com/questions/4931376/generating-matplotlib-graphs-without-a-running-x-server

반응형