Wie kann ich das 'Backend' in matplotlib in Python einstellen?

86

Ich bin neuer Benutzer von matplotlib, meine Plattform ist Ubuntu 10.04 Python 2.6.5

Das ist mein Code

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

Der Fehler ist:

/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()))
  • Ich habe die Anti-Grain Geometry-Bibliothek installiert, apt-get install libaggaber sie funktioniert nicht.
  • Ich habe versucht, andere Backend-Argumente wie 'GTK' und 'TkAgg' zu verwenden.
  • Ich habe das python-gtk2-devPaket installiert , aber der Fehler ist immer noch unten.
  • Kann mir jemand ein ausführbares Backend-Argument und seine Abhängigkeitsbibliothek mitteilen?

Hier ist der Fehler:

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

Antworten:

84

Ihr aktuell ausgewähltes Backend 'agg' unterstützt show () nicht.

AGGDas Backend dient zum Schreiben in eine Datei und nicht zum Rendern in einem Fenster. Lesen Sie die Backend-FAQ auf der matplotlib-Website.

ImportError: Kein Modul mit dem Namen _backend_gdk

Für den zweiten Fehler wird Ihre Matplotlib-Distribution möglicherweise nicht mit GTK-Unterstützung kompiliert, oder Sie verpassen das PyGTK-Paket. Versuchen Sie es zu installieren.

Rufen Sie die show()Methode in einem Terminal oder einer Anwendung auf, die Zugriff auf eine grafische Umgebung hat?

Probieren Sie andere GUI-Backends in dieser Reihenfolge aus:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg
Andrea Spadaccini
quelle
Vielen Dank, das falsche Personal, das ich getan habe, ist Matplotlib einzurichten, bevor PyGTK
user504909
1
Als Nebenbemerkung würde ich QTAgg zuletzt versuchen, da dies auf QT3 abzielt und mittelfristig wahrscheinlich veraltet sein wird.
Tacaswell
28

Zu Ihrer Information, ich musste matplotlib.use('Agg')zuerst die Python-Importreihenfolge eingeben. Für das, was ich tat (Unit-Tests mussten kopflos sein), bedeutete das Putten

import matplotlib
matplotlib.use('Agg')

oben in meinem Master-Testskript. Ich musste keine anderen Dateien berühren.

Ben
quelle
Ich muss das Gleiche tun, was mich sehr beunruhigt. Haben Sie jemals eine andere elegrante Lösung gefunden?
QM.py
Und ich fand, dass es wichtig ist, ganz oben zu stehen (nicht nach bestimmten anderen Importen). +1.
Ryan
Ja, dies muss das absolut erste sein, was Sie tun, bevor Sie andere Matplotlib-Importe durchführen.
JakeCowton
19

Dies kann auch in der Konfigurationsdatei festgelegt werden matplotlibrc(wie in der Fehlermeldung erläutert), zum Beispiel:

# 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

Auf diese Weise muss das Backend nicht fest codiert werden, wenn der Code mit anderen Personen geteilt wird. Weitere Informationen finden Sie in der Dokumentation .

BenC
quelle
7

Die von Ihnen veröffentlichten Fehler stehen in keinem Zusammenhang. Der erste Grund ist, dass Sie ein Backend auswählen, das nicht für die interaktive Verwendung vorgesehen ist, z. B. agg. Sie können diese weiterhin für die Generierung von Plots in Skripten verwenden (und sollten dies auch tun), für die keine Benutzerinteraktion erforderlich ist.

Wenn Sie eine interaktive Laborumgebung wie in Matlab / Pylab wünschen, importieren Sie offensichtlich ein Backend, das die Verwendung von GUI unterstützt, wie z. B. Qt4Agg (benötigt Qt und AGG), GTKAgg (GTK und AGG) oder WXAgg (wxWidgets und Agg).

Ich würde zunächst versuchen, WXAgg zu verwenden. Abgesehen davon hängt es wirklich davon ab, wie Sie Python und matplotlib installiert haben (Quelle, Paket usw.).

Jim Brissom
quelle
3

Bevor Sie Python starten, können Sie in Bash tun

export MPLBACKEND=TkAgg
Friedrich
quelle
3

Sie können auch versuchen, das Diagramm in einem Browser anzuzeigen.

Verwenden Sie Folgendes:

matplotlib.use('WebAgg')
Grizzle
quelle
2

Ich habe dies getroffen, als ich versucht habe, Python, Numpy, Scipy und Matplotlib in meinem eigenen VIRTUAL_ENV zu kompilieren

Vor der Installation von matplotlib müssen Sie Folgendes erstellen und installieren: pygobject pycairo pygtk

Und dann machen Sie es mit matplotlib: Bevor Sie matplotlib erstellen, überprüfen Sie mit 'python ./setup.py build --help', ob das Backend 'gtkagg' aktiviert ist. Dann bauen und installieren

Vor dem Export PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig

Übrigens
quelle