it-swarm.com.de

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

Ich bin ein 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 apt-get install libagg installiert, aber sie funktioniert nicht.
  • Ich habe versucht, andere Argumente wie "GTK" und "TkAgg" zu verwenden.
  • Ich habe das python-gtk2-dev-Paket installiert, aber der Fehler ist immer noch darunter.
  • Kann mir jemand ein ausführbares Backend-Argument und seine Abhängigkeitsbibliothek nennen?

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

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

AGG backend dient zum Schreiben in eine Datei und nicht zum Rendern in einem Fenster. Siehe 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 vermissen 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
67

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

import matplotlib
matplotlib.use('Agg')

an der Spitze meines Master-Testskripts. Ich musste keine anderen Dateien berühren.

17
Ben

Dies kann auch in der Konfigurationsdatei matplotlibrc festgelegt werden (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 für andere Personen freigegeben wird. Weitere Informationen finden Sie in der Dokumentation documentation .

16
BenC

Die von Ihnen geposteten Fehler hängen nicht zusammen. Der erste Grund liegt darin, dass Sie ein Backend auswählen, das nicht für die interaktive Verwendung gedacht ist, d. H. Agg. Sie können diese weiterhin für die Erstellung von Darstellungen in Skripts verwenden, die keine Benutzerinteraktion erfordern.

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

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

7
Jim Brissom

Ich traf das, wenn ich versuche, Python, Numpy, Scipy und Matplotlib in meinem eigenen VIRTUAL_ENV zu kompilieren

Bevor Sie matplotlib installieren, müssen Sie Folgendes erstellen und installieren: Pygobject Pycairo Pygtk

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

Vor dem Export ist PKG_CONFIG_PATH = $ VIRTUAL_ENV/lib/pkgconfig

2
btwe

Bevor Sie Python starten, können Sie dies in bash tun

export MPLBACKEND=TkAgg
0
Friedrich