wake-up-neo.net

Wie sage ich Matplotlib, dass ich mit einem Plot fertig bin?

Der folgende Code zeichnet zwei PostScript (.ps) -Dateien auf, der zweite enthält jedoch beide Zeilen.

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(111)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.subplot(111)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

Wie kann ich matplotlib anweisen, für den zweiten Plot neu zu beginnen?

130
Stefano Borini

Sie können beispielsweise figure verwenden, um ein neues Diagramm zu erstellen, oder nach dem ersten Diagramm close verwenden.

106

Es gibt einen klaren Zahlenbefehl, und das sollte es für Sie tun:

plt.clf()

Wenn Sie mehrere Unterzeichnungen in derselben Figur haben

plt.cla()

löscht die aktuellen Achsen.

144
randlet

Wie von David Cournapeau angegeben, verwenden Sie figure ().

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.figure()
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.figure()
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

Oder Subplot (121)/Subplot (122) für dieselbe Zeichnung, andere Position.

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(121)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")

plt.subplot(122)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")
28
lmount

Geben Sie einfach plt.hold(False) vor dem ersten plt.plot ein, und Sie können Ihren ursprünglichen Code beibehalten.

13
Dirklinux

Wenn Sie Matplotlib interaktiv verwenden, beispielsweise in einer Webanwendung (z. B. ipython), suchen Sie möglicherweise nach

plt.show()

anstelle von plt.close() oder plt.clf().

6
Damo

Wenn keiner von ihnen funktioniert, überprüfen Sie dies. Sagen Sie, ob Sie X- und Y-Datenfelder entlang der jeweiligen Achse haben. Dann prüfen Sie, in welcher Zelle (Jupyter) Sie x und y leer gesetzt haben. Dies liegt daran, dass Sie möglicherweise Daten an x ​​und y anfügen, ohne sie erneut zu initialisieren. Der Plot hat also auch alte Daten. Also prüfe das ..

0
Seenivasan