2013-06-14 8 views
25

Jak masz matplotlib.pyplot „zapomnieć” poprzedni Działkimatplotlib.pyplot nie zapomni poprzednich działek - jak mogę przepłukać/odświeżyć?

Usiłuję wykreślić wiele czasu przy matplotlib.pyplot

Kod wygląda następująco:

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

Niestety wciąż otrzymuję tę samą działkę (faktycznie z jakiegoś innego kodu, który prowadziłem i skończyłem jakiś czas temu) bez względu na to, co robię.

Podobny kod pracował wcześniej dla mnie.

Mam spojrzał na te pytania:

How to "clean the slate"?

Matplotlib pyplot show() doesn't work once closed

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

i spróbował wykorzystać plt.show(), plt.clf() i plt.close bezskutecznie.

Wszelkie pomysły?

Odpowiedz

49

wolałbym użyć plt.gcf().clear() po każdym plt.show(). Po prostu wyczyści rysunek, zamiast go zamknąć i ponownie otworzyć, zachowując rozmiar okna i zapewniając lepszą wydajność.

9

Odkryłem, że to zachowanie występuje tylko po uruchomieniu określonego skryptu, podobnego do tego w pytaniu. Nie mam pojęcia, dlaczego tak się dzieje.

Działa (odświeża wykresy) jeśli kładę

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

po każdym plt.show()

Powiązane problemy