matplotlib.pyplot sẽ không quên các ô trước đó - làm cách nào để xóa / làm mới?


88

Làm thế nào để bạn có matplotlib.pyplotthể "quên" các âm mưu trước đó

Tôi đang cố gắng vẽ nhiều thời gian bằng cách sử dụng matplotlib.pyplot

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

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

Mã tương tự đã làm việc trước đây cho tôi.

Tôi đã xem xét những câu hỏi sau:

Làm thế nào để "làm sạch đá phiến"?

Matplotlib pyplot show () không hoạt động sau khi đóng

(python) matplotlib pyplot show () .. chặn hay không?

và đã thử sử dụng plt.show(), plt.clf()plt.closevô ích.

Có ý kiến ​​gì không?

Câu trả lời:


113

Tôi muốn sử dụng plt.clf()sau mỗi lần plt.show()để chỉ xóa con số hiện tại thay vì đóng và mở lại nó, giữ nguyên kích thước cửa sổ và mang lại cho bạn hiệu suất tốt hơn và sử dụng bộ nhớ tốt hơn nhiều.

Tương tự, bạn có thể làm plt.cla() để xóa các trục hiện tại .

Để xóa một trục cụ thể , hữu ích khi bạn có nhiều trục trong một hình, bạn có thể làm ví dụ:

fig, axes = plt.subplots(nrows=2, ncols=2)

axes[0, 1].clear()

47

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ó xảy ra.

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

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

sau mỗi plt.show()

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.