Saya perlu membuat gambar dalam file tanpa menampilkannya di dalam notebook IPython. Saya tidak jelas tentang interaksi antara IPython
dan matplotlib.pylab
dalam hal ini. Tapi, ketika saya menelepon pylab.savefig("test.png")
, gambar saat ini ditampilkan selain disimpan di test.png
. Saat mengotomatiskan pembuatan sekumpulan besar file plot, ini sering kali tidak diinginkan. Atau dalam situasi di mana file perantara untuk pemrosesan eksternal oleh aplikasi lain diinginkan.
Tidak yakin apakah ini pertanyaan matplotlib
atau IPython
buku catatan.
ioff
Jawaban:
Ini adalah pertanyaan matplotlib, dan Anda bisa menyiasatinya dengan menggunakan backend yang tidak ditampilkan kepada pengguna, misalnya 'Agg':
EDIT: Jika Anda tidak ingin kehilangan kemampuan untuk menampilkan plot, matikan Mode Interaktif , dan panggil hanya
plt.show()
saat Anda siap untuk menampilkan plot:sumber
close()
danshow()
perintah dan , yang seharusnya menyelesaikan masalah Anda. mengganti backend dengan cepat tidak didukung, seperti yang telah Anda temukan.plt.plot()
jika mode interaktif aktif. Menonaktifkan mode interaktif akan menunda tampilan plot apa pun hinggaplt.show()
. Karena Anda menggunakan notebook ipython, mode interaktif diperlakukan berbeda.matplotlib.use('Agg')
sendirilah yang berhasil. Saya tidak membutuhkan apapunplt.show()
atauplt.ioff()
dalam kode saya sama sekali.Kami tidak perlu
plt.ioff()
atauplt.show()
(jika kami menggunakan%matplotlib inline
). Anda dapat menguji kode di atas tanpaplt.ioff()
.plt.close()
memiliki peran penting. Coba yang ini:Jika Anda menjalankan kode ini di iPython, ini akan menampilkan plot kedua, dan jika Anda menambahkan
plt.close(fig2)
di akhir, Anda tidak akan melihat apa-apa.Kesimpulannya, jika Anda mendekati gambar
plt.close(fig)
, itu tidak akan ditampilkan.sumber
plt.ioff
saya dapatkanRuntimeWarning: More than 20 figures have been opened...
.plt.close
menyelesaikannya.