web-dev-qa-db-fra.com

la fenêtre de tracé de matplotlib n'apparaîtra pas

J'utilise Python 2.7.3 en 64 bits. J'ai installé des pandas ainsi que matplotlib 1.1.1, tous deux pour 64 bits. À l'heure actuelle, aucune de mes parcelles ne montre. Après avoir tenté de tracer à partir de plusieurs images différentes, j'ai abandonné de frustration et ai essayé le premier exemple suivant tiré de http://pandas.pydata.org/pandas-docs/dev/visualization.html :

INPUT:

import matplotlib.pyplot as plt
ts = Series(randn(1000), index=date_range ('1/1/2000', periods=1000))
ts = ts.cumsum()
ts.plot()
pylab.show()

OUTPUT:  

Axes(0.125,0.1;0.775x0.8)

Et aucune fenêtre d'intrigue n'est apparue. D'autres threads StackOverflow que j'ai lus m'ont suggéré de ne pas avoir de DLL. Aucune suggestion?

13
user1518837

Je ne suis pas convaincu qu'il s'agisse d'un problème de pandas.

Est-ce que 

import matplotlib.pyplot as plt
plt.plot(range(10))
plt.show()

faire un complot?

Si non:

Comment avez-vous installé matplotlib? Était-ce à partir des sources ou l'avez-vous installé à partir d'un gestionnaire de paquets/d'un binaire pré-construit?

Je soupçonne que si vous courez:

import matplotlib            
print matplotlib.rcParams['backend']

Le résultat sera un backend non-graphique (presque certainement "Agg"). Cela suggère que vous ne disposez pas d'une boîte à outils graphique appropriée (j'utilise personnellement Tkinter, ce qui signifie que mon backend est signalé comme "TkAgg").

La solution à cela dépend de votre système d'exploitation, mais si vous pouvez installer une bibliothèque d'interface graphique (une parmi Tkinter, GTK, QT4, PySide, Wx), alors pyplot.show() devrait ouvrir une fenêtre pour vous.

HTH,

25
pelson

J'ai eu ce problème lorsque je travaille à partir d'un virtualenv. 

Cause

La cause du problème est que, lorsque vous pip install matplotlib, il ne trouve aucun moteur (même s’il est installé sur votre ordinateur), il utilise donc le système "agg", qui ne crée aucun tracé, mais écrit uniquement des fichiers. Pour confirmer que c'est le cas, allez à: python -c "import matplotlib; print matplotlib.get_backend()", vous voyez probablement agg.

Je pourrais cependant utiliser avec succès matplotlib sur le système (en dehors de virtualenv). J'ai également échoué à installer PySide, PyQt ou à le faire fonctionner pour TkAgg, pour diverses raisons.

Solution

J'ai finalement juste créé un lien vers ma version système de matplotlib (à partir de l'extérieur de la venv):

...$ pip install matplotlib
...$ cd /to/my/venv/directory
...$ source venv/bin/activate
(venv) .... $ pip uninstall matplotlib
(venv) .... $ ln -s /usr/lib/pymodules/python2.7/matplotlib $VIRTUAL_ENV/lib.python*/site-packages

Après cela, je pourrais utiliser matplotlib et les graphiques montreraient. Votre version locale de matplotlib peut se trouver à un endroit différent. Pour voir où il se trouve, allez (en dehors du venv, en python)

...$ python -c 'import matplotlib; matplotlib.__file__'
1
Peter