Jawaban:
Mereka semua melakukan hal yang berbeda, karena matplotlib menggunakan urutan hierarkis di mana jendela gambar berisi gambar yang dapat terdiri dari banyak sumbu. Selain itu, ada fungsi dari antarmuka pyplot dan ada metode di Figure
kelas. Saya akan membahas kedua kasus di bawah ini.
pyplot
adalah modul yang mengumpulkan beberapa fungsi yang memungkinkan matplotlib untuk digunakan secara fungsional. Saya di sini berasumsi bahwa pyplot
telah diimpor sebagai import matplotlib.pyplot as plt
. Dalam hal ini, ada tiga perintah berbeda yang menghapus barang:
plt.cla()
membersihkan sumbu , yaitu sumbu yang saat ini aktif dalam gambar saat ini. Itu membuat sumbu lainnya tidak tersentuh.
plt.clf()
membersihkan seluruh gambar saat ini dengan semua sumbunya, tetapi membiarkan jendela terbuka, sehingga dapat digunakan kembali untuk plot lainnya.
plt.close()
menutup jendela , yang akan menjadi jendela saat ini, jika tidak ditentukan sebaliknya.
Fungsi mana yang paling cocok untuk Anda tergantung pada use-case Anda.
The close()
Fungsi selanjutnya memungkinkan seseorang untuk menentukan jendela yang harus ditutup. Argumen dapat berupa angka atau nama yang diberikan ke jendela saat dibuat menggunakan figure(number_or_name)
atau bisa berupa contoh figur yang fig
diperoleh, yaitu menggunakan fig = figure()
. Jika tidak ada argumen yang diberikan close()
, jendela yang sedang aktif akan ditutup. Selanjutnya ada sintaksisnyaclose('all')
, yang menutup semua angka.
Selain itu, Figure
kelas menyediakan metode untuk membersihkan angka. Saya akan menganggap berikut fig
ini yang merupakan contoh dari Figure
:
fig.clf()
membersihkan seluruh gambar . Panggilan ini setara dengan plt.clf()
hanya jika fig
angka saat ini.
fig.clear()
adalah sinonim untuk fig.clf()
Perhatikan bahwa bahkan del fig
tidak akan menutup jendela gambar yang terkait. Sejauh yang saya tahu satu-satunya cara untuk menutup jendela gambar menggunakan plt.close(fig)
seperti yang dijelaskan di atas.
clear()
, saya belum melihat banyak perbedaan dengan cla()
hanya bahwa pada kapak parasit hanya cla()
diperlakukan secara khusus.
clear()
fungsi di saya matplotlib.pyplot
(Versi 1.4.2 di MacOS). Bisakah Anda mengarahkan saya ke dokumentasi terkait?
clear()
metode. The Figure.clear
setara dengan clf
dan Axes.clear
setara dengan cla
.
Hanya ada peringatan yang saya temukan hari ini. Jika Anda memiliki fungsi yang memanggil plot banyak kali Anda lebih baik menggunakan plt.close(fig)
daripada fig.clf()
entah bagaimana yang pertama tidak menumpuk di memori. Singkatnya jika memori adalah masalah, gunakan plt.close (ara) (Meskipun tampaknya ada cara yang lebih baik, lanjutkan ke akhir komentar ini untuk tautan yang relevan).
Jadi skrip berikut akan menghasilkan daftar kosong:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
Sedangkan yang satu ini akan menghasilkan daftar dengan lima angka di atasnya.
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
Dari dokumentasi di atas tidak jelas bagi saya apa perbedaan antara menutup angka dan menutup jendela. Mungkin itu akan menjelaskan.
Jika Anda ingin mencoba skrip lengkap di sana Anda memiliki:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1000)
y = np.sin(x)
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
plt.close(fig)
print(plt.get_fignums())
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
fig.clf()
print(plt.get_fignums())
Jika ingatan adalah masalah, seseorang sudah memposting pekerjaan di SO, lihat: Buat angka yang referensi dihitung
pyplot
API standar .
plt.cla () berarti sumbu saat ini jelas
plt.clf () berarti angka yang jelas sekarang
juga, ada plt.gca () (dapatkan sumbu saat ini) dan plt.gcf () (dapatkan gambar saat ini)
Baca lebih lanjut di sini: Matplotlib, Pyplot, Pylab dll: Apa perbedaan antara ini dan kapan menggunakannya?
close()
ini adalah perintah yang tidak spesifik, saya mencari cara untuk menentukan angka penutupan (fig.close()
bukan fungsi). Sintaks yang benar adalah:plt.close(fig)
.