Antworten:
Sie alle machen unterschiedliche Dinge, da matplotlib eine hierarchische Reihenfolge verwendet, in der ein Figurenfenster eine Figur enthält, die aus vielen Achsen bestehen kann. Darüber hinaus gibt es Funktionen von der Pyplot-Schnittstelle und Methoden für die Figure
Klasse. Ich werde beide Fälle unten diskutieren.
pyplot
ist ein Modul, das einige Funktionen sammelt, mit denen matplotlib auf funktionale Weise verwendet werden kann. Ich gehe hier davon aus, dass pyplot
als importiert wurde import matplotlib.pyplot as plt
. In diesem Fall gibt es drei verschiedene Befehle, mit denen Inhalte entfernt werden:
plt.cla()
löscht eine Achse , dh die aktuell aktiven Achsen in der aktuellen Abbildung. Die anderen Achsen bleiben unberührt.
plt.clf()
Löscht die gesamte aktuelle Figur mit all ihren Achsen, lässt jedoch das Fenster geöffnet, sodass es für andere Diagramme wiederverwendet werden kann.
plt.close()
schließt ein Fenster , das das aktuelle Fenster ist, sofern nicht anders angegeben.
Welche Funktionen am besten zu Ihnen passen, hängt also von Ihrem Anwendungsfall ab.
Mit der close()
Funktion kann außerdem festgelegt werden, welches Fenster geschlossen werden soll. Das Argument kann entweder eine Nummer oder ein Name sein, die einem Fenster beim Erstellen mit verwendet wurden, figure(number_or_name)
oder es kann eine Figureninstanz sein, die fig
erhalten wurde, dh mit fig = figure()
. Wenn kein Argument angegeben wird, close()
wird das aktuell aktive Fenster geschlossen. Darüber hinaus gibt es die Syntax close('all')
, die alle Zahlen schließt.
Darüber hinaus bietet die Figure
Klasse Methoden zum Löschen von Zahlen. Ich gehe im Folgenden davon aus, dass fig
es sich um eine Instanz von a handelt Figure
:
fig.clf()
löscht die gesamte Figur . Dieser Aufruf entspricht plt.clf()
nur dann, wenn fig
es sich um die aktuelle Zahl handelt.
fig.clear()
ist ein Synonym für fig.clf()
Beachten Sie, dass del fig
das zugehörige Figurenfenster nicht einmal geschlossen wird. Soweit ich weiß, kann ein Figurenfenster nur plt.close(fig)
wie oben beschrieben geschlossen werden.
clear()
, ich habe keinen großen Unterschied gesehen, cla()
nur dass nur in Parasitenäxten cla()
speziell behandelt wird.
clear()
Funktion in meinem matplotlib.pyplot
(Version 1.4.2 unter MacOS). Könnten Sie mich auf die zugehörige Dokumentation verweisen?
clear()
Methode. Das Figure.clear
Äquivalent zu clf
und Axes.clear
ist äquivalent zu cla
.
Es gibt nur eine Einschränkung, die ich heute entdeckt habe. Wenn Sie eine Funktion haben, die häufig einen Plot aufruft, verwenden Sie diese besser, plt.close(fig)
anstatt fig.clf()
dass sich die erste nicht im Speicher ansammelt. Kurz gesagt, wenn der Speicher ein Problem darstellt, verwenden Sie plt.close (Abb.) (Obwohl es anscheinend bessere Möglichkeiten gibt, finden Sie am Ende dieses Kommentars relevante Links).
Das folgende Skript erzeugt also eine leere Liste:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
In diesem Fall wird eine Liste mit fünf Ziffern erstellt.
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
Aus der obigen Dokumentation ist mir nicht klar, was der Unterschied zwischen dem Schließen einer Figur und dem Schließen eines Fensters ist. Vielleicht wird das klarstellen.
Wenn Sie dort ein vollständiges Skript ausprobieren möchten, haben Sie:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1000)
y = np.sin(x)
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
plt.close(fig)
print(plt.get_fignums())
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
fig.clf()
print(plt.get_fignums())
Wenn der Speicher ein Problem darstellt, hat bereits jemand eine Problemumgehung in SO veröffentlicht. Siehe: Erstellen Sie eine Zahl, die als Referenz gezählt wird
pyplot
API gesammelt wird .
plt.cla () bedeutet freie Stromachse
plt.clf () bedeutet eindeutige aktuelle Zahl
Außerdem gibt es plt.gca () (aktuelle Achse abrufen ) und plt.gcf () (aktuelle Abbildung abrufen ).
Lesen Sie hier mehr: Matplotlib, Pyplot, Pylab usw .: Was ist der Unterschied zwischen diesen und wann sie jeweils verwendet werden?
close()
es sich um einen unspezifischen Befehl handelt, habe ich nach einer Möglichkeit gesucht, das Schließen von Figuren anzugeben (fig.close()
ist keine Funktion). Die korrekte Syntax lautet :plt.close(fig)
.