파이썬의 matplotlib에서 '백엔드'를 어떻게 설정할 수 있습니까?


89

저는 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

답변:


89

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

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

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

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

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

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

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

감사하는 것은 매우 내가 한 잘못 직원은 전에 설정하기 matplotlib입니다 GET PyGTK
— user504909

1
사이드 코멘트로 QT3를 대상으로하는 QTAgg를 마지막으로 시도 할 것이며 중기 적으로 더 이상 사용되지 않을 것입니다.
— tacaswell 2013 년

29

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

import matplotlib
matplotlib.use('Agg')

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


저를 많이 괴롭히는 똑같은 일을해야합니다. 다른 elegrant 솔루션을 찾은 적이 있습니까?
— QM.py

그리고 나는 그것이 (다른 특정 수입품 이후가 아니라) 최상위에있는 것이 중요하다는 것을 발견했습니다. +1.
— 라이언

예, 이것은 다른 matplotlib 가져 오기 전에 가장 먼저 수행하는 작업이어야합니다.
— JakeCowton 2010 년

19

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

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


7

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

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

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


3

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

export MPLBACKEND=TkAgg

3

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

다음을 사용하십시오.

matplotlib.use('WebAgg')

2

내 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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.