matplotlib.pyplot tidak akan melupakan plot sebelumnya - bagaimana cara membilas / menyegarkan?

89

Bagaimana Anda bisa matplotlib.pyplot"melupakan" plot sebelumnya

Saya mencoba merencanakan beberapa kali menggunakan matplotlib.pyplot

Kodenya terlihat seperti ini:

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

Sayangnya saya terus mendapatkan plot yang sama (sebenarnya dari beberapa kode lain yang saya jalankan dan selesaikan beberapa waktu yang lalu) tidak peduli apa yang saya lakukan.

Kode serupa telah berfungsi sebelumnya untuk saya.

Saya telah melihat pertanyaan-pertanyaan ini:

Bagaimana cara "membersihkan batu tulis"?

Matplotlib pyplot show () tidak berfungsi setelah ditutup

(python) matplotlib pyplot show () .. memblokir atau tidak?

dan mencoba menggunakan plt.show(), plt.clf()dan plt.closetidak berhasil.

Ada ide?

atomh33ls
sumber

Jawaban:

114

Saya lebih suka menggunakan plt.clf()setelah setiap plt.show()untuk hanya menghapus gambar saat ini daripada menutup dan membukanya kembali, menjaga ukuran jendela dan memberi Anda kinerja yang lebih baik dan penggunaan memori yang jauh lebih baik.

Demikian pula, yang dapat Anda lakukan plt.cla() untuk menghapus sumbu saat ini .

Untuk menghapus sumbu tertentu , berguna bila Anda memiliki banyak sumbu dalam satu gambar, Anda dapat melakukan misalnya:

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

axes[0, 1].clear()
Saullo GP Castro
sumber
48

Saya menemukan bahwa perilaku ini hanya terjadi setelah menjalankan skrip tertentu, mirip dengan yang ada di pertanyaan. Saya tidak tahu mengapa itu terjadi.

Ia bekerja (menyegarkan grafik) jika saya meletakkan

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

setelah setiap plt.show()

atomh33ls
sumber