Hoe kan ik de ‘backend’ in Matplotlib in Python instellen?

Ik ben een nieuwe gebruiker van Matplotlib, mijn platform is Ubuntu 10.04 Python 2.6.5

Dit is mijn code

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

De fout is:

/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()))
  • Ik heb de anti-graan geometrie-bibliotheek geïnstalleerd apt-get install libaggMaar het werkt niet.
  • Ik probeerde een ander argument van backend zoals ‘GTK’ en ‘TKAGG’ te gebruiken.
  • Ik heb python-gtk2-devpakket geïnstalleerd, maar nog steeds is de fout hieronder.
  • Kan iemand me een uitvoerbare backend-argument en de afhankelijkheidsbibliotheek vertellen?

Hier is de foutmelding:

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

Antwoord 1, autoriteit 100%

Uw momenteel geselecteerde backend, ‘agg’ ondersteunt show( niet).

AGGbackend is bedoeld om naar een bestand te schrijven, niet om in een venster te renderen. Zie de backend FAQop de matplotlib-website.

ImportError: Geen module met de naam _backend_gdk

Voor de tweede fout: misschien is je matplotlib-distributie niet gecompileerd met GTK-ondersteuning, of mis je het PyGTK-pakket. Probeer het te installeren.

Roep je de methode show()aan in een terminal of applicatie die toegang heeft tot een grafische omgeving?

Probeer andere GUI backendsin deze bestelling:

  • TkAgg
  • wxAgg
  • Qt5Agg
  • Qt4Agg

Antwoord 2, autoriteit 31%

Ter info, ik ontdekte dat ik matplotlib.use('Agg')eerst in de Python-importvolgorde moest plaatsen. Voor wat ik aan het doen was (eenheidstests moesten headless zijn) betekende dat het zetten van

import matplotlib
matplotlib.use('Agg')

bovenaan mijn hoofdtestscript. Ik hoefde geen andere bestanden aan te raken.


Antwoord 3, autoriteit 19%

Dit kan ook worden ingesteld in het configuratiebestand matplotlibrc(zoals uitgelegd in het foutbericht), bijvoorbeeld:

# 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

Op die manier hoeft de backend niet hardcoded te zijn als de code wordt gedeeld met andere mensen.
Controleer voor meer informatie de documentatie .


Antwoord 4, Autoriteit 7%

De fouten die u hebt geplaatst, zijn niet gerelateerd. De eerste is het gevolg van het selecteren van een backend die niet bedoeld is voor interactief gebruik, d.w.z. agg. U kunt nog steeds (en moeten gebruiken) die voor het genereren van percelen in scripts die geen gebruikersinteractie vereisen.

Als u een interactieve lab-omgeving wilt, zoals in MATLAB / PYLAB, importeer u duidelijk een backend-ondersteunend GUI-gebruik, zoals QT4AGG (heeft QT en AGG), GTKAGG (GTK AAGG) of WXAGG (WXWIDGETS en Agg).

Ik zou beginnen met het proberen om WXAGG te gebruiken, afgezien van dat het echt afhangt van hoe je Python en Matplotlib (bron, pakket enz.)

hebt geïnstalleerd


Antwoord 5, Autoriteit 4%

Voordat u Python start, kunt u doen in BASH

export MPLBACKEND=TkAgg

Antwoord 6, Autoriteit 4%

U kunt ook proberen de grafiek in een browser te bekijken.

Gebruik het volgende:

matplotlib.use('WebAgg')

Antwoord 7, Autoriteit 3%

Voor nieuwe komers,

matplotlib.pyplot.switch_backend(newbackend)

Antwoord 8, Autoriteit 2%

Ik raakte dit bij het compileren van python, numpy, scipy, matplotlib in mijn eigen VIRTUAL_ENV

Voordat u matplotlib installeert, moet u het volgende bouwen en installeren:
pygobject
pycaïro
pygtk

En doe het dan met matplotlib:
Controleer voordat u matplotlib bouwt met ‘python ./setup.py build –help’ of de ‘gtkagg’-backend is ingeschakeld. Bouw en installeer vervolgens

Vóór export PKG_CONFIG_PATH=$VIRTUAL_ENV/lib/pkgconfig

Other episodes