파이썬의 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.