Ils font tous des choses différentes, car matplotlib utilise un ordre hiérarchique dans lequel une fenêtre de figure contient une figure qui peut être composée de plusieurs axes. De plus, il existe des fonctions de l'interface pyplot et il existe des méthodes sur leFigure
classe. Je vais discuter des deux cas ci-dessous.
interface pyplot
pyplot
est un module qui rassemble quelques fonctions qui permettent d'utiliser matplotlib de manière fonctionnelle. Je suppose ici que cela pyplot
a été importé en tant que import matplotlib.pyplot as plt
. Dans ce cas, il existe trois commandes différentes qui suppriment les éléments:
plt.cla()
efface un axe , c'est-à-dire les axes actuellement actifs dans la figure actuelle. Il laisse les autres axes intacts.
plt.clf()
efface la figure actuelle entière avec tous ses axes, mais laisse la fenêtre ouverte, de sorte qu'elle peut être réutilisée pour d'autres tracés.
plt.close()
ferme une fenêtre , qui sera la fenêtre actuelle, sauf indication contraire.
La fonction qui vous convient le mieux dépend donc de votre cas d'utilisation.
La close()
fonction permet en outre de spécifier quelle fenêtre doit être fermée. L'argument peut être soit un nombre ou un nom donné à une fenêtre lors de sa création en utilisant, figure(number_or_name)
soit une instance de figure fig
obtenue, c'est-à-dire en utilisant fig = figure()
. Si aucun argument n'est donné close()
, la fenêtre actuellement active sera fermée. De plus, il y a la syntaxe close('all')
, qui ferme toutes les figures.
méthodes de la classe Figure
De plus, la Figure
classe fournit des méthodes pour effacer les chiffres. Je suppose que dans ce qui suit fig
est une instance de Figure
:
fig.clf()
efface la figure entière . Cet appel est équivalent à plt.clf()
seulement si fig
est le chiffre actuel.
fig.clear()
est synonyme de fig.clf()
Notez que même del fig
ne fermera pas la fenêtre de figure associée. Pour autant que je sache, la seule façon de fermer une fenêtre de figure est d'utiliser plt.close(fig)
comme décrit ci-dessus.
close()
c'est une commande non spécifique, je suis allé chercher un moyen de spécifier la fermeture de la figure (cefig.close()
n'est pas une fonction). La syntaxe correcte est:plt.close(fig)
.clear()
, je n'ai pas vu beaucoup de différence aveccla()
seulement que dans les axes parasites seulementcla()
est traité spécialement.clear()
fonction dans monmatplotlib.pyplot
(version 1.4.2 sur MacOS). Pourriez-vous me diriger vers la documentation associée?clear()
méthode. L'Figure.clear
équivalent declf
etAxes.clear
est équivalent àcla
.Il y a juste une mise en garde que j'ai découverte aujourd'hui. Si vous avez une fonction qui appelle un tracé un grand nombre de fois, il vaut mieux l'utiliser
plt.close(fig)
plutôt quefig.clf()
la première ne s'accumule pas en mémoire. En bref, si la mémoire est un problème, utilisez plt.close (fig) (bien qu'il semble qu'il y ait de meilleures façons, allez à la fin de ce commentaire pour les liens pertinents).Ainsi, le script suivant produira une liste vide:
Alors que celui-ci va produire une liste avec cinq chiffres dessus.
D'après la documentation ci-dessus, il n'est pas clair pour moi quelle est la différence entre fermer une figure et fermer une fenêtre. Peut-être que cela clarifiera.
Si vous voulez essayer un script complet, vous avez:
Si la mémoire est un problème, quelqu'un a déjà publié une solution de contournement dans SO, voir: Créer une figure qui est comptée par référence
la source
pyplot
API standard .plt.cla () signifie effacer l'axe actuel
plt.clf () signifie effacer le chiffre actuel
il y a aussi plt.gca () (obtenir l'axe actuel) et plt.gcf () (obtenir le chiffre actuel)
En savoir plus ici: Matplotlib, Pyplot, Pylab etc: Quelle est la différence entre ces derniers et quand les utiliser?
la source