Cum pot seta ‘backend’ în matplotlib în Python? (Programare, Python, Linux, Grafică, Matplotlib)

user504909 a intrebat.

Sunt un utilizator nou de matplotlib, platforma mea este Ubuntu 10.04 Python 2.6.5

Acesta este codul meu

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

Eroarea este:

/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()))
  • Am instalat biblioteca Anti-Grain Geometry apt-get install libagg dar nu funcționează.
  • Am încercat să folosesc alte argumente de backend, cum ar fi ‘GTK’ și ‘TkAgg’.
  • Am instalat python-gtk2-dev dar eroarea de mai jos este în continuare.
  • Poate cineva să-mi spună un argument de backend executabil și biblioteca de dependență a acestuia?

Aici este eroarea:

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

8 răspunsuri
Andrea Spadaccini

Backend-ul selectat în prezent, ‘agg’ nu acceptă show().

AGG backend-ul este pentru scrierea în fișier, nu pentru redarea într-o fereastră. Consultați Întrebări frecvente despre backend pe site-ul web matplotlib.

ImportError: Nu există un modul numit _backend_gdk

Pentru a doua eroare, poate că distribuția matplotlib nu este compilată cu suport GTK sau vă lipsește pachetul PyGTK. Încercați să îl instalați.

Apelezi la show() în interiorul unui terminal sau al unei aplicații care are acces la un mediu grafic?

Încercați alte backend-uri GUI, în această ordine:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

Comentarii

  • vă mulțumesc foarte mult personalul greșit am făcut este să instalez matplotlib înainte de a obține PyGTK –  > Por user504909.
  • ca un comentariu secundar, aș încerca QTAgg ultimul, deoarece acesta vizează QT3 și va fi probabil depreciat pe termen mediu. –  > Por tacaswell.
Ben

Pentru informarea dvs., am constatat că trebuie să pun matplotlib.use('Agg') primul în ordinea de import Python. Pentru ceea ce făceam (testarea unitară trebuia să fie fără cap), asta însemna să pun

import matplotlib
matplotlib.use('Agg')

în partea de sus a scriptului meu de test principal. Nu a trebuit să ating niciun alt fișier.

Comentarii

  • Trebuie să fac același lucru, ceea ce mă deranjează foarte mult. Ați găsit vreodată o altă soluție elegantă? –  > Por QM.py.
  • Și am constatat că este important ca acesta să fie chiar în partea de sus (nu după anumite alte importuri). +1. –  > Por Ryan.
  • Da, acesta trebuie să fie absolut primul lucru pe care îl faceți înainte de orice alte importuri matplotlib. –  > Por JakeCowton.
BenC

Acest lucru poate fi, de asemenea, setat în fișierul de configurare matplotlibrc (așa cum se explică în mesajul de eroare), de exemplu:

# 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

În acest fel, backend-ul nu trebuie să fie hardcoded dacă codul este partajat cu alte persoane.Pentru mai multe informații, verificați pagina de documentația.

Jim Brissom

Erorile pe care le-ați postat nu au nicio legătură. Prima se datorează faptului că ați selectat un backend care nu este destinat utilizării interactive, adică agg. Puteți totuși să le folosiți (și ar trebui să le folosiți) pentru generarea de diagrame în scripturi care nu necesită interacțiunea utilizatorului.

Dacă doriți un mediu de laborator interactiv, ca în Matlab/Pylab, este evident că trebuie să importați un backend care să suporte utilizarea unui ghid, cum ar fi Qt4Agg (are nevoie de Qt și AGG), GTKAgg (GTK și AGG) sau WXAgg (wxWidgets și Agg).

Eu aș începe prin a încerca să folosesc WXAgg, în afară de asta, depinde de modul în care ați instalat Python și matplotlib (sursă, pachet etc.).

Friedrich

Înainte de a începe python, puteți face în bash

export MPLBACKEND=TkAgg

Grizzle

De asemenea, puteți încerca să vizualizați graficul într-un browser.

Folosiți următoarele:

matplotlib.use('WebAgg')

btwe

M-am lovit de acest lucru când am încercat să compilez python, numpy, scipy, matplotlib în propriul VIRTUAL_ENV

Înainte de a instala matplotlib trebuie să construiți și să instalați:pygobjectpycairopygtk

Și apoi faceți-o cu matplotlib:Înainte de a construi matplotlib verificați cu ‘python ./setup.py build –help’ dacă backend-ul ‘gtkagg’ este activat. Apoi construiți și instalați

Înainte de export PKG_CONFIG_PATH=$VIRTUAL_ENV/lib/pkgconfig

Ali Erkan

Pentru noii veniți,

matplotlib.pyplot.switch_backend(newbackend)