Quand utiliser cla (), clf () ou close () pour effacer un graphique dans matplotlib?



Answers

Il y a juste une mise en garde que j'ai découverte aujourd'hui. Si vous avez une fonction qui appelle un intrigue un grand nombre de fois, il vaut mieux utiliser plt.close(fig) au lieu de fig.clf() façon ou d'une autre le premier 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 existe de meilleurs moyens, allez à la fin de ce commentaire pour les liens pertinents).

Ainsi, le script suivant produira une liste vide:

for i in range(5):
    fig = plot_figure()
    plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())

Alors que celui-ci produira une liste avec cinq chiffres.

for i in range(5):
    fig = plot_figure()
    fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())

De la documentation ci-dessus n'est pas clair pour moi quelle est la différence entre la fermeture d'une figure et la fermeture d'une fenêtre. Peut-être que cela clarifiera.

Si vous voulez essayer un script complet, vous avez:

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())

Si la mémoire est une préoccupation, quelqu'un a déjà posté un work-around dans SO voir: Créer un chiffre qui est compté de référence

Question

Matplotlib offre des fonctions:

cla()   # Clear axis
clf()   # Clear figure
close() # Close a figure window

La documentation n'offre pas beaucoup d'informations sur la différence entre ces fonctions. Quand dois-je utiliser chaque fonction et que fait-elle exactement?




Related



Tags

matplotlib