webentwicklung-frage-antwort-db.com.de

das matplotlib-Plotfenster wird nicht angezeigt

Ich verwende Python 2.7.3 in 64-Bit. Ich habe sowohl Pandas als auch Matplotlib 1.1.1 für 64-Bit installiert. Im Moment wird keiner meiner Pläne gezeigt. Nachdem ich versucht hatte, von mehreren verschiedenen Datenrahmen zu zeichnen, gab ich frustriert auf und versuchte das folgende erste Beispiel von http://pandas.pydata.org/pandas-docs/dev/visualization.html :

EINGABE:

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

AUSGABE:

Axes(0.125,0.1;0.775x0.8)

Und es erschien kein Handlungsfenster. Andere von mir gelesene StackOverflow-Threads schlugen vor, dass möglicherweise DLLs fehlen. Irgendwelche Vorschläge?

13
user1518837

Ich bin nicht davon überzeugt, dass dies überhaupt ein Pandas-Problem ist.

Tut

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

ein Grundstück ansprechen?

Wenn nicht:

Wie haben Sie matplotlib installiert? War es aus dem Quellcode oder haben Sie es von einem Paketmanager/einer vorgefertigten Binärdatei installiert?

Ich vermute, dass, wenn Sie laufen:

import matplotlib            
print matplotlib.rcParams['backend']

Das Ergebnis ist ein Backend ohne GUI (mit ziemlicher Sicherheit "Agg"). Dies deutet darauf hin, dass Sie kein geeignetes GUI-Toolkit zur Verfügung haben (ich persönlich verwende Tkinter, was bedeutet, dass mein Backend als "TkAgg" gemeldet wird).

Die Lösung hierfür hängt von Ihrem Betriebssystem ab. Wenn Sie jedoch eine GUI-Bibliothek (Tkinter, GTK, QT4, PySide, Wx) installieren können, sollte pyplot.show() hoffentlich ein Fenster für Sie öffnen.

HTH,

25
pelson

Ich hatte dieses Problem, als ich von einem virtuellen Computer aus arbeitete.

Ursache

Die Ursache des Problems liegt darin, dass beim pip install matplotlib keine Backends gefunden werden (auch wenn diese auf Ihrem Computer installiert sind). Daher wird das "agg" -Backend verwendet, das keine Plots erstellt, sondern nur Dateien schreibt. Um zu bestätigen, dass dies der Fall ist, gehen Sie zu: python -c "import matplotlib; print matplotlib.get_backend()", wahrscheinlich sehen Sie agg.

Ich konnte Matplotlib jedoch erfolgreich auf dem System (außerhalb des virtuellen Env) verwenden. Ich konnte PySide, PyQt oder TkAgg aus verschiedenen Gründen nicht installieren.

Lösung

Ich habe irgendwann einen Link zu meiner Systemversion von matplotlib erstellt (von außerhalb des 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

Danach konnte ich matplotlib benutzen und die Handlungen würden sich zeigen. Ihre lokale Version von matplotlib befindet sich möglicherweise an einem anderen Ort. Um zu sehen, wo es ist, gehen Sie (außerhalb des Venv, in Python)

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