[python] 파이썬의 matplotlib에서 ‘백엔드’를 어떻게 설정할 수 있습니까?

저는 matplotlib의 새로운 사용자이며 내 플랫폼은 Ubuntu 10.04 Python 2.6.5입니다.

이것은 내 코드입니다

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3])

오류는 다음과 같습니다.

/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py:41: UserWarning:
Your currently selected backend, 'agg' does not support show().
Please select a GUI backend in your matplotlibrc file ('/usr/local/lib/python2.6/dist-packages/matplotlib/mpl-data/matplotlibrc')
or with matplotlib.use()
  (backend, matplotlib.matplotlib_fname()))
  • Anti-Grain Geometry 라이브러리를 설치 apt-get install libagg했지만 작동하지 않습니다.
  • ‘GTK’와 ‘TkAgg’와 같은 백엔드의 다른 인수를 사용해 보았습니다.
  • python-gtk2-dev패키지를 설치 했지만 여전히 오류가 아래에 있습니다.
  • 누구든지 나에게 실행 가능한 백엔드 인수와 종속성 라이브러리를 말할 수 있습니까?

다음은 오류입니다.

>>> matplotlib.use('GTK')
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/matplotlib/pyplot.py", line 95, in <module>
    new_figure_manager, draw_if_interactive, show = pylab_setup()
  File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
    globals(),locals(),[backend_name])
  File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gtk.py", line 28, in <module>
    from matplotlib.backends.backend_gdk import RendererGDK, FigureCanvasGDK
  File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gdk.py", line 29, in <module>
    from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array
ImportError: No module named _backend_gdk



답변

현재 선택한 백엔드 ‘agg’는 show ()를 지원하지 않습니다.

AGG백엔드는 창에서 렌더링하는 것이 아니라 파일에 쓰기위한 것입니다. matplotlib 웹 사이트에서 백엔드 FAQ 를 참조하십시오 .

ImportError : _backend_gdk라는 모듈이 없습니다.

두 번째 오류의 경우 matplotlib 배포가 GTK 지원으로 컴파일되지 않았거나 PyGTK 패키지가 누락되었을 수 있습니다. 그것을 설치하십시오.

show()그래픽 환경에 대한 액세스 권한이있는 터미널 또는 응용 프로그램 내부 에서 메서드 를 호출 합니까?

다음 순서로 다른 GUI 백엔드를 시도하십시오.

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg


답변

참고로, matplotlib.use('Agg')Python 가져 오기 순서를 먼저 입력해야한다는 것을 알았습니다 . 내가하고 있던 일 (단위 테스트는 헤드리스가되어야 함)을 위해

import matplotlib
matplotlib.use('Agg')

내 마스터 테스트 스크립트 상단에 있습니다. 다른 파일을 만질 필요가 없었습니다.


답변

matplotlibrc예를 들어 다음과 같이 구성 파일 (오류 메시지에 설명 된대로) 에서 설정할 수도 있습니다 .

# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
backend : Agg

이렇게하면 코드가 다른 사람과 공유되는 경우 백엔드를 하드 코딩 할 필요가 없습니다. 자세한 내용은 설명서를 확인하십시오 .


답변

게시 한 오류는 관련이 없습니다. 첫 번째는 대화식 사용을위한 것이 아닌 백엔드 (예 : agg)를 선택했기 때문입니다. 사용자 상호 작용이 필요하지 않은 스크립트에서 플롯 생성을 위해 여전히 사용할 수 있습니다 (사용해야 함).

Matlab / Pylab에서와 같이 대화 형 실험실 환경을 원한다면 Qt4Agg (Qt 및 AGG 필요), GTKAgg (GTK 및 AGG) 또는 WXAgg (wxWidgets 및 Agg)와 같은 GUI 사용을 지원하는 백엔드를 분명히 가져 오면됩니다.

Python과 matplotlib (소스, 패키지 등)을 설치 한 방법에 따라 WXAgg를 사용하는 것으로 시작하겠습니다.


답변

파이썬을 시작하기 전에 bash에서 할 수 있습니다.

export MPLBACKEND=TkAgg


답변

브라우저에서 그래프를 볼 수도 있습니다.

다음을 사용하십시오.

matplotlib.use('WebAgg')


답변

내 VIRTUAL_ENV에서 python, numpy, scipy, matplotlib를 컴파일하려고 할 때 이것을 누르십시오.

matplotlib를 설치하기 전에 빌드하고 설치해야합니다 : pygobject pycairo pygtk

그런 다음 matplotlib로 수행하십시오. ‘gtkagg’백엔드가 활성화 된 경우 matplotlib를 빌드하기 전에 ‘python ./setup.py build –help’로 확인하십시오. 그런 다음 빌드 및 설치

내보내기 전 PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig