it-swarm.com.de

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

Wie kommt es, dass matplotlib.pyplot Frühere Diagramme "vergisst"?

Ich versuche mehrere Male mit matplotlib.pyplot Zu zeichnen.

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 (eigentlich von einem anderen Code, den ich vor einiger Zeit ausgeführt und fertiggestellt habe), egal was ich tue.

Ein ähnlicher Code hat bisher bei mir funktioniert.

Ich habe mir diese Fragen angeschaut:

Wie "den Schiefer reinigen"?

Matplotlib Pyplot Show () funktioniert nicht einmal geschlossen

(Python) Matplotlib Pyplot show () .. blockieren oder nicht?

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

Irgendwelche Ideen?

67
atomh33ls

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

Auf ähnliche Weise können Sie plt.cla() ausführen, um nur das aktuelle Achsen zu löschen.

Um ein bestimmtes Achsen zu löschen, das nützlich ist, wenn Sie mehrere Achsen in einer Figur haben, können Sie zum Beispiel Folgendes tun:

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

axes[0, 1].clear()
97

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 es sage

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

nach jedem plt.show()

29
atomh33ls