Risposte:
Fanno tutti cose diverse, dal momento che matplotlib usa un ordine gerarchico in cui una finestra di figura contiene una figura che può essere composta da molti assi. Inoltre, ci sono funzioni dall'interfaccia pyplot e ci sono metodi sulla Figure
classe. Discuterò entrambi i casi di seguito.
pyplot
è un modulo che raccoglie un paio di funzioni che consentono di utilizzare matplotlib in modo funzionale. Suppongo che pyplot
sia stato importato come import matplotlib.pyplot as plt
. In questo caso, ci sono tre diversi comandi che rimuovono le cose:
plt.cla()
cancella un asse , ovvero gli assi attualmente attivi nella figura corrente. Lascia intatti gli altri assi.
plt.clf()
cancella l'intera figura corrente con tutti i suoi assi, ma lascia aperta la finestra, in modo che possa essere riutilizzata per altri grafici.
plt.close()
chiude una finestra , che sarà la finestra corrente, se non diversamente specificato.
Le funzioni più adatte a te dipendono quindi dal tuo caso d'uso.
La close()
funzione consente inoltre di specificare quale finestra deve essere chiusa. L'argomento può essere un numero o un nome dato a una finestra quando è stato creato usando figure(number_or_name)
oppure può essere un'istanza di figura fig
ottenuta, cioè usando fig = figure()
. Se non viene fornito alcun argomento close()
, la finestra attualmente attiva verrà chiusa. Inoltre, c'è la sintassi close('all')
, che chiude tutte le cifre.
Inoltre, la Figure
classe fornisce metodi per cancellare le figure. Presumo in seguito che fig
sia un'istanza di a Figure
:
fig.clf()
cancella l'intera figura . Questa chiamata equivale a plt.clf()
solo se fig
è la cifra corrente.
fig.clear()
è sinonimo di fig.clf()
Si noti che anche del fig
non chiuderà la finestra della figura associata. Per quanto ne so, l'unico modo per chiudere una finestra di figura è usare plt.close(fig)
come descritto sopra.
clear()
, non ho visto molta differenza con cla()
solo che negli assi del parassita cla()
è trattata appositamente.
clear()
funzione in my matplotlib.pyplot
(versione 1.4.2 su MacOS). Potresti indirizzarmi alla documentazione associata?
clear()
metodo. L' Figure.clear
equivalente a clf
ed Axes.clear
è equivalente a cla
.
C'è solo un avvertimento che ho scoperto oggi. Se hai una funzione che chiama molte volte una trama, è meglio usarla plt.close(fig)
invece che in fig.clf()
qualche modo la prima non si accumula in memoria. In breve, se la memoria è un problema, utilizzare plt.close (fig) (anche se sembra che ci siano modi migliori, andare alla fine di questo commento per i collegamenti pertinenti).
Quindi il seguente script produrrà un elenco vuoto:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
Considerando che questo produrrà un elenco con cinque cifre su di esso.
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
Dalla documentazione sopra non mi è chiaro quale sia la differenza tra la chiusura di una figura e la chiusura di una finestra. Forse questo chiarirà.
Se vuoi provare uno script completo lì hai:
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())
Se la memoria è un problema, qualcuno ha già pubblicato una soluzione in SO, vedere: Creare una figura contata come riferimento
pyplot
nell'API standard .
plt.cla () significa cancellare l'asse corrente
plt.clf () significa cancellare la figura corrente
inoltre, c'è plt.gca () (ottieni l'asse corrente) e plt.gcf () (ottieni la figura attuale)
Maggiori informazioni qui: Matplotlib, Pyplot, Pylab ecc. Qual è la differenza tra questi e quando utilizzarli?
close()
è un comando non specifico, sono andato alla ricerca di un modo per specificare la chiusura della figura (fig.close()
non è una funzione). La sintassi corretta è:plt.close(fig)
.