Come posso impostare il 'backend' in matplotlib in Python?


91

Sono un nuovo utente di matplotlib, la mia piattaforma è Ubuntu 10.04 Python 2.6.5

Questo è il mio codice

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

L'errore è:

/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()))
  • Ho installato la libreria Anti-Grain Geometry apt-get install libaggma non funziona.
  • Ho provato a utilizzare altri argomenti di backend come "GTK" e "TkAgg".
  • Ho installato il python-gtk2-devpacchetto, ma l'errore è ancora sotto.
  • Qualcuno può dirmi un argomento di backend eseguibile e la sua libreria di dipendenze?

Ecco l'errore:

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

Risposte:


93

Il tuo backend attualmente selezionato, "agg" non supporta show ().

AGGbackend è per la scrittura su file, non per il rendering in una finestra. Vedere le domande frequenti sul back - end sul sito Web matplotlib.

ImportError: nessun modulo denominato _backend_gdk

Per il secondo errore, forse la tua distribuzione matplotlib non è compilata con il supporto GTK, o ti manca il pacchetto PyGTK. Prova a installarlo.

Chiamate il show()metodo all'interno di un terminale o di un'applicazione che ha accesso a un ambiente grafico?

Prova altri backend GUI, in questo ordine:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

grazie mille lo staff sbagliato che ho fatto è stato impostare matplotlib prima di ottenere PyGTK
user504909

1
come commento a margine, proverei QTAgg per ultimo in quanto mira a QT3 e probabilmente sarà deprecato a medio termine.
tacaswell

30

Cordiali saluti, ho scoperto che dovevo inserire matplotlib.use('Agg')prima nell'ordine di importazione Python. Per quello che stavo facendo (i test unitari dovevano essere senza testa) ciò significava mettere

import matplotlib
matplotlib.use('Agg')

all'inizio del mio script di test principale. Non ho dovuto toccare altri file.


Devo fare la stessa cosa che mi turba molto. Hai mai trovato un'altra soluzione elegante?
QM.py

E ho scoperto che è importante che sia in cima (non dopo alcune altre importazioni). +1.
Ryan

Sì, questa deve essere la prima cosa da fare in assoluto prima di qualsiasi altra importazione di matplotlib.
JakeCowton

19

Questo può essere impostato anche nel file di configurazione matplotlibrc(come spiegato nel messaggio di errore), ad esempio:

# 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

In questo modo, il backend non ha bisogno di essere codificato se il codice è condiviso con altre persone. Per ulteriori informazioni, consultare la documentazione .


7

Gli errori che hai pubblicato non sono correlati. Il primo è dovuto alla selezione di un backend che non è pensato per un uso interattivo, cioè agg. Puoi ancora usare (e dovresti usare) quelli per la generazione di grafici negli script che non richiedono l'interazione dell'utente.

Se desideri un ambiente di laboratorio interattivo, come in Matlab / Pylab, dovresti ovviamente importare un backend che supporti l'utilizzo della gui, come Qt4Agg (richiede Qt e AGG), GTKAgg (GTK e AGG) o WXAgg (wxWidgets e Agg).

Inizierei provando a usare WXAgg, a parte questo dipende davvero da come hai installato Python e matplotlib (sorgente, pacchetto ecc.)


4

Prima di avviare Python, puoi farlo in bash

export MPLBACKEND=TkAgg

3

Puoi anche provare a visualizzare il grafico in un browser.

Utilizza il seguente:

matplotlib.use('WebAgg')

2

Ho colpito questo quando provo a compilare python, numpy, scipy, matplotlib nel mio VIRTUAL_ENV

Prima di installare matplotlib devi compilare e installare: pygobject pycairo pygtk

E poi fallo con matplotlib: prima di compilare matplotlib controlla con 'python ./setup.py build --help' se il backend 'gtkagg' è abilitato. Quindi crea e installa

Prima dell'esportazione PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig


2

Per i nuovi arrivati,

matplotlib.pyplot.switch_backend(newbackend)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.