web-dev-qa-db-fra.com

Comment définir le "backend" dans matplotlib en Python?

Je suis un nouvel utilisateur de matplotlib, ma plate-forme est Ubuntu 10.04 Python 2.6.5

C'est mon code

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

L'erreur est:

/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()))
  • J'ai installé la bibliothèque Anti-Grain Geometry apt-get install libagg mais cela ne fonctionne pas.
  • J'ai essayé d'utiliser un autre argument de backend tel que 'GTK' et 'TkAgg'.
  • J'ai installé le paquet python-gtk2-dev, mais l'erreur est toujours ci-dessous.
  • Quelqu'un peut-il me dire un argument backend exécutable et sa bibliothèque de dépendances?

Voici l'erreur:

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

Le backend actuellement sélectionné, "agg", ne supporte pas show ().

AGG backend est utilisé pour écrire dans un fichier, pas pour le rendu dans une fenêtre. Voir le backend FAQ sur le site Web de matplotlib.

ImportError: Aucun module nommé _backend_gdk

Pour la deuxième erreur, peut-être que votre distribution matplotlib n’est pas compilée avec le support GTK, ou vous manquez le paquet PyGTK. Essayez de l'installer.

Appelez-vous la méthode show() dans un terminal ou une application ayant accès à un environnement graphique?

Essayez d’autres interfaces graphiques, dans cet ordre:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg
67
Andrea Spadaccini

Pour votre information, j'ai trouvé que j'avais besoin de mettre matplotlib.use('Agg') en premier dans l'ordre d'importation Python. Pour ce que je faisais (les tests unitaires devaient être sans tête) cela signifiait mettre

import matplotlib
matplotlib.use('Agg')

au sommet de mon script de test maître. Je n'ai pas eu à toucher à d'autres fichiers.

17
Ben

Ceci peut également être défini dans le fichier de configuration matplotlibrc (comme expliqué dans le message d'erreur), par exemple:

# 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

De cette façon, le backend n'a pas besoin d'être codé en dur si le code est partagé avec d'autres personnes . Pour plus d'informations, consultez documentation .

16
BenC

Les erreurs que vous avez publiées ne sont pas liées. Le premier est dû au fait que vous avez sélectionné un serveur qui n’est pas destiné à une utilisation interactive, c’est-à-dire agg. Vous pouvez toujours utiliser (et devriez utiliser) ceux pour la génération de graphiques dans des scripts qui ne nécessitent pas d'interaction de l'utilisateur.

Si vous voulez un environnement de laboratoire interactif, comme dans Matlab/Pylab, vous importerez évidemment un backend prenant en charge l'utilisation de l'interface graphique, tel que Qt4Agg (nécessite Qt et AGG), GTKAgg (GTK et AGG) ou WXAgg (wxWidgets et Agg).

Je commencerais par essayer d'utiliser WXAgg, mais cela dépend vraiment de la manière dont vous avez installé Python et matplotlib (source, paquet, etc.).

7
Jim Brissom

Je frappe ceci en essayant de compiler python, numpy, scipy, matplotlib dans mon propre VIRTUAL_ENV

Avant d'installer matplotlib, vous devez créer et installer: Pygobject Pycairo Pygtk

Et faites-le ensuite avec matplotlib: Avant de construire matplotlib, vérifiez avec 'python ./setup.py build --help' si le backend 'gtkagg' est activé. Ensuite, construisez et installez 

Avant l'exportation PKG_CONFIG_PATH = $ VIRTUAL_ENV/lib/pkgconfig

2
btwe

Avant de commencer python, vous pouvez le faire en bash

export MPLBACKEND=TkAgg
0
Friedrich