123 votes

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

Je suis un nouvel utilisateur de matplotlib, ma plateforme est Ubuntu 10.04 Python 2.6.5

Voici mon code

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

L'erreur est la suivante :

/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 d'autres arguments de backend comme 'GTK' et 'TkAgg'.
  • J'ai installé python-gtk2-dev mais l'erreur persiste.
  • Quelqu'un peut-il m'indiquer un argument de backend exécutable et sa bibliothèque de dépendance ?

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

42voto

Ben Points 635

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

import matplotlib
matplotlib.use('Agg')

au début de mon test principal script. Je n'ai pas eu à toucher à d'autres fichiers.

21voto

BenC Points 2292

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 la page la documentation .

7voto

Jim Brissom Points 10282

Les erreurs que vous avez affichées ne sont pas liées. La première est due au fait que vous avez sélectionné un backend qui n'est pas conçu pour une utilisation interactive, c'est-à-dire agg. Vous pouvez toujours les utiliser (et devriez les utiliser) pour la génération de graphiques dans les scripts qui ne nécessitent pas d'interaction avec l'utilisateur.

Si vous voulez un environnement de laboratoire interactif, comme dans Matlab/Pylab, vous devez évidemment importer un backend supportant l'utilisation des interfaces graphiques, comme Qt4Agg (nécessite Qt et AGG), GTKAgg (GTK et AGG) ou WXAgg (wxWidgets et Agg).

Je commencerais par essayer d'utiliser WXAgg, à part cela, cela dépend vraiment de la façon dont vous

7voto

Grizzle Points 446

Vous pouvez également essayer de visualiser le graphique dans un navigateur.

Utilisez les éléments suivants :

matplotlib.use('WebAgg')

6voto

Friedrich Points 191

Avant de démarrer python, vous pouvez faire dans bash

export MPLBACKEND=TkAgg

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X