2011-02-08 14 views
61

Sono nuovo utente di matplotlib, mia piattaforma è Ubuntu 10.04 Python 2.6.5Come posso impostare il 'backend' in matplotlib in Python?

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 l'Anti -Grain Geometry library apt-get install libagg ma non funziona.
  • Ho provato a utilizzare altri argomenti di back-end come "GTK" e "TkAgg".
  • Ho installato il pacchetto python-gtk2-dev, ma l'errore è ancora sotto.
  • Qualcuno può dirmi un argomento di backend eseguibile e la sua libreria delle 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 

risposta

61

Your currently selected backend, 'agg' does not support show().

AGG backend è per la scrittura di file, non per il rendering in una finestra. Vedere lo backend FAQ sul sito Web matplotlib.

ImportError: No module named _backend_gdk

Per il secondo errore, forse la vostra distribuzione matplotlib non è compilato con il supporto di GTK, o ti manca il pacchetto PyGTK. Prova ad installarlo.

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

provare altri backend GUI, in questo ordine:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg
+0

ringrazio molto il personale sbagliato che ho fatto è configurato matplotlib prima di ottenere PyGTK – user504909

+1

come commento lato, vorrei provare QTAgg scorso come quella rivolge QT3 e sarà probabilmente deprecato a medio termine. – tacaswell

6

Gli errori hai postato non sono correlati. Il primo è dovuto alla selezione di un back-end che non è pensato per l'uso interattivo, ad es. È comunque possibile utilizzare (e utilizzare) quelli per la generazione di grafici negli script che non richiedono l'interazione dell'utente.

Se si desidera un laboratorio-ambiente interattivo, come in Matlab/Pylab, si sarebbe ovviamente importa un backend di supporto utilizzo gui, come ad esempio Qt4Agg (ha bisogno di Qt e AGG) wxWidgets, GTKAgg (GTK un AGG) o WXAgg (e Agg).

mi piacerebbe iniziare cercando di utilizzare WXAgg, a parte che in realtà dipende da come è stato installato Python e matplotlib (fonte, pacchetto ecc)

+0

vi ringrazio molto seleziono GTKAgg alla fine – user504909

1

mi ha colpito questo quando si cerca di compilare python, numpy, SciPy , matplotlib nel mio VIRTUAL_ENV

Prima di installare matplotlib si deve costruire ed installare: pygobject pycairo pygtk

e poi farlo con matplotlib: Prima di costruire matplotlib verificare con 'pitone ./setup.py costruire --help' se il backend 'gtkagg' è abilitato. Poi costruire e installare

Prima export PKG_CONFIG_PATH = $ VIRTUAL_ENV/lib/pkgconfig

12

FYI, ho trovato avevo bisogno di mettere matplotlib.use('Agg') prima in Python ordine di importazione. Per quello che stavo facendo (unità di test necessari per essere senza testa) che significava mettere

import matplotlib 
matplotlib.use('Agg') 

nella parte superiore del mio script di test master. Non ho dovuto toccare nessun altro file.

+0

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

13

Questo può anche essere impostato nel file di configurazione matplotlibrc (come spiegato nel messaggio di errore), per 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 hardcoded se il codice è condiviso con altre persone. Per ulteriori informazioni, controllare lo documentation.

Problemi correlati