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?

atomh33ls
quelle

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()
Saullo GP Castro
quelle
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()

atomh33ls
quelle