matplotlib.pyplot vergisst frühere Plots nicht - wie kann ich spülen / aktualisieren?


88

Wie kommt man matplotlib.pyplotdazu, frühere Handlungen zu "vergessen"?

Ich versuche, mehrere Male mit zu zeichnen matplotlib.pyplot

Der Code sieht folgendermaßen aus:

def plottest():
    import numpy as np
    import matplotlib.pyplot as plt


    a=np.random.rand(10,)
    b=np.random.rand(10,)
    c=np.random.rand(10,)


    plt.plot(a,label='a')
    plt.plot(b,label='b')
    plt.plot(c,label='c')
    plt.legend(loc='upper left')
    plt.ylabel('mag')
    plt.xlabel('element)')
    plt.show()

    e=np.random.rand(10,)
    f=np.random.rand(10,)
    g=np.random.rand(10,)


    plt.plot(e,label='e')
    plt.plot(f,label='f')
    plt.plot(g,label='g')
    plt.legend(loc='upper left')
    plt.ylabel('mag')
    plt.xlabel('element)')
    plt.show()

Leider bekomme ich immer die gleiche Handlung (tatsächlich von einem anderen Code, den ich vor einiger Zeit ausgeführt und abgeschlossen habe), egal was ich tue.

Ein ähnlicher Code hat zuvor für mich funktioniert.

Ich habe mir diese Fragen angesehen:

Wie "den Schiefer reinigen"?

Matplotlib pyplot show () funktioniert nach dem Schließen nicht mehr

(Python) Matplotlib Pyplot Show () .. Blockieren oder nicht?

und versucht zu verwenden plt.show(), plt.clf()und plt.closeohne Erfolg.

Irgendwelche Ideen?

Antworten:


112

Ich würde lieber plt.clf()nach jedem verwenden, plt.show()um nur die aktuelle Zahl zu löschen, anstatt sie zu schließen und wieder zu öffnen, die Fenstergröße beizubehalten und Ihnen eine bessere Leistung und eine viel bessere Speichernutzung zu bieten.

Ebenso können Sie plt.cla() die aktuellen Achsen löschen .

Um eine bestimmte Achse zu löschen , die nützlich ist, wenn Sie mehrere Achsen in einer Figur haben, können Sie beispielsweise Folgendes tun:

fig, axes = plt.subplots(nrows=2, ncols=2)

axes[0, 1].clear()

46

Ich habe festgestellt, dass dieses Verhalten nur auftritt, nachdem ein bestimmtes Skript ausgeführt wurde, ähnlich dem in der Frage. Ich habe keine Ahnung, warum es auftritt.

Es funktioniert (aktualisiert die Grafiken), wenn ich setze

plt.clf()
plt.cla()
plt.close()

nach jedem plt.show()

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.