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?

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.