2013-06-14 18 views
25

Làm thế nào để bạn có được matplotlib.pyplot để "quên" lô trướcmatplotlib.pyplot sẽ không quên các ô trước đó - làm thế nào tôi có thể tuôn ra/làm mới?

tôi đang cố gắng để vẽ nhiều thời gian sử dụng matplotlib.pyplot

Mã này trông như thế này:

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

Đáng tiếc là tôi tiếp tục nhận được âm mưu tương tự (thực sự từ một số mã khác mà tôi đã chạy và hoàn thành một thời gian trước đây) bất kể tôi làm gì.

Mã tương tự đã hoạt động trước đó đối với tôi.

tôi đã xem xét những câu hỏi này:

How to "clean the slate"?

Matplotlib pyplot show() doesn't work once closed

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

và cố gắng sử dụng plt.show(), plt.clf()plt.close vô ích.

Bất kỳ ý tưởng nào?

Trả lời

49

Tôi thà sử dụng plt.gcf().clear() sau mỗi plt.show(). Nó sẽ chỉ rõ ràng con số thay vì đóng và mở lại nó, giữ kích thước cửa sổ và cho bạn một hiệu suất tốt hơn quá.

9

Tôi phát hiện ra rằng hành vi này chỉ xảy ra sau khi chạy một tập lệnh cụ thể, tương tự như tập lệnh trong câu hỏi. Tôi không biết tại sao nó lại xảy ra.

Nó hoạt động (làm mới các đồ thị) nếu tôi đặt

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

sau mỗi plt.show()

Các vấn đề liên quan