3 votes

Comment fermer une figure ou remplacer une figure sans devoir fermer manuellement chaque figure dans Python/pylab ?

J'ai cherché sur de nombreux sites, utilisé des tracés, des sous-tracés, une animation de base et d'autres moyens détournés, mais la figure ne se ferme pas malgré l'utilisation de close(), clf(), etc.

J'ai quelque chose comme ça :

    import numpy
    from pylab import *
    import time
    fig = Figure() 
    counter1 = 0
    counter2 = 0

    while counter1<5:
            counter1 = counter1+1
            while counter2<10:
                    scatter(x_list[counter2], y_list[counter2], hold = 'on') ### x_list and y_list are just lists of random numbers
                    counter2 = counter2 + 1
            show()
            sleep(0.5)
            close()

Je suis à la recherche de toute solution, comme indiqué ci-dessus. Plots, sous-points, animation...

3voto

DSM Points 71975

Deux questions secondaires pour commencer : premièrement, êtes-vous sûr que c'est le code que vous exécutez réellement ? sleep n'est pas une fonction dans ma version de pylab, donc votre import time ne semble pas correspondre à votre appel, il devrait être time.sleep(0.5) . Deuxièmement, je ne comprends pas du tout vos boucles. On dirait que vous tracez la même chose 5 fois, parce que counter1 n'a aucun effet et que vous ajoutez chaque point au nuage de points avant de faire une pause. Essayez-vous de tracer x_list/y_list point par point ?

Si vous utilisez draw() au lieu de show(), je pense que cela devrait fonctionner ; le show() est ce qui retient le close(). Est-ce que ce qui suit ressemble à ce que vous voulez ?

import time
from pylab import *
ion()

# test data
x = arange(0, 10, 0.5)
y = 10*x+exp(x)*abs(cos(x))

for j in range(len(x)):
    if j > 0: scatter(x[:j], y[:j])
    # assuming we don't want the limits to change
    xlim(0, 10)
    ylim(0, 1000)
    draw()
    time.sleep(2)
    #close()

Notez que j'ai commenté le close() parce que de cette façon, cela produit une belle animation. Si vous la laissez, la fenêtre continuera à se fermer et à se rouvrir, ce qui pourrait être ce que vous voulez, mais n'est pas très utile à mes yeux. YMMV, bien sûr.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X