2013-06-14 11 views
25

Come si ottiene matplotlib.pyplot a "dimenticare" trame precedentimatplotlib.pyplot non dimenticherà i grafici precedenti - come posso svuotare/aggiornare?

Sto cercando di tracciare il tempo multipla usando matplotlib.pyplot

Il codice è simile al seguente:

def plottest(): 
    import numpy as np 
    import matplotlib.pyplot as plt 


    a=np.random.rand(10,) 
    b=np.random.rand(10,) 
    c=np.random.rand(10,) 


    plt.plot(a,label='a') 
    plt.plot(b,label='b') 
    plt.plot(c,label='c') 
    plt.legend(loc='upper left') 
    plt.ylabel('mag') 
    plt.xlabel('element)') 
    plt.show() 

    e=np.random.rand(10,) 
    f=np.random.rand(10,) 
    g=np.random.rand(10,) 


    plt.plot(e,label='e') 
    plt.plot(f,label='f') 
    plt.plot(g,label='g') 
    plt.legend(loc='upper left') 
    plt.ylabel('mag') 
    plt.xlabel('element)') 
    plt.show() 

Purtroppo continuo a ricevere lo stesso plot (in realtà da qualche altro codice che ho eseguito e completato qualche tempo fa), non importa quello che faccio.

Il codice simile ha funzionato in precedenza per me.

Ho guardato queste domande:

How to "clean the slate"?

Matplotlib pyplot show() doesn't work once closed

(python) matplotlib pyplot show() .. blocking or not?

e provato ad utilizzare plt.show(), plt.clf() e plt.close inutilmente.

Qualche idea?

risposta

49

avrei preferito usare plt.gcf().clear() dopo ogni plt.show(). Si limiterà a cancellare la figura anziché chiuderla e riaprirla, mantenendo le dimensioni della finestra e offrendo prestazioni migliori.

9

Ho scoperto che questo comportamento si verifica solo dopo aver eseguito uno script particolare, simile a quello nella domanda. Non ho idea del perché si verifichi.

Funziona (aggiorna i grafici) se metto

plt.clf() 
plt.cla() 
plt.close() 

dopo ogni plt.show()

Problemi correlati