Yanıtlar:
Matplotlib, şekil penceresinin birçok eksenden oluşabilecek bir şekil içerdiği hiyerarşik bir düzen kullandığından hepsi farklı şeyler yapar. Ayrıca, pyplot arayüzünden fonksiyonlar vardır ve Figure
sınıfta yöntemler vardır . Aşağıda her iki durumu da tartışacağım.
pyplot
matplotlib'in işlevsel bir şekilde kullanılmasına izin veren birkaç işlevi toplayan bir modüldür. Burada bunun pyplot
olarak ithal edildiğini varsayıyorum import matplotlib.pyplot as plt
. Bu durumda, şeyleri kaldıran üç farklı komut vardır:
plt.cla()
bir ekseni , yani geçerli şekilde aktif olan eksenleri temizler . Diğer eksenlere dokunulmaz.
plt.clf()
tüm mevcut şekli tüm eksenleriyle temizler , ancak pencereyi açık bırakır, böylece diğer grafikler için tekrar kullanılabilir.
plt.close()
aksi belirtilmedikçe geçerli pencere olacak bir pencereyi kapatır .
Hangi işlevlerin size en uygun olduğu bu nedenle kullanım durumunuza bağlıdır.
close()
Fonksiyon ayrıca bir kapatılmalıdır hangi pencere belirlemenizi sağlar. Bağımsız değişken, bir pencere oluşturulduğunda bir pencereye verilen bir sayı veya ad figure(number_or_name)
olabilir veya fig
elde edilen bir şekil örneği , yani kullanılarak olabilir fig = figure()
. Bir argüman verilmezse close()
, o anda etkin olan pencere kapatılır. Ayrıca, close('all')
tüm rakamları kapatan sözdizimi vardır .
Ayrıca, Figure
sınıf rakamları temizlemek için yöntemler sağlar. Aşağıda bunun fig
bir örneği olduğunu varsayacağım Figure
:
fig.clf()
tüm rakamı temizler . Bu çağrı plt.clf()
yalnızca fig
geçerli rakam olduğunda eşdeğerdir .
fig.clear()
ile eşanlamlıdır fig.clf()
del fig
İlişkili şekil penceresinin bile kapanmayacağını unutmayın . Bildiğim kadarıyla bir şekil penceresini kapatmanın tek yolu plt.close(fig)
yukarıda açıklandığı gibidir.
clear()
, ben cla()
sadece parazit eksenlerinde sadece cla()
özel tedavi ile çok fazla fark görmedim .
clear()
benim, fonksiyon matplotlib.pyplot
(MacOS üzerinde Versiyon 1.4.2). Beni ilgili belgelere yönlendirebilir misiniz?
clear()
yöntemi vardır. İle Figure.clear
eşdeğer clf
ve Axes.clear
eşdeğerdir cla
.
Bugün keşfettiğim bir uyarı var. Eğer bir çok kez arsa çağıran bir fonksiyonunuz varsa, bir şekilde plt.close(fig)
yerine daha iyi kullanın fig.clf()
, ilk bellekte birikmez. Kısacası bellek bir endişe ise plt.close (fig) kullanın (Daha iyi yollar var gibi görünse de, ilgili bağlantılar için bu yorumun sonuna gidin).
Aşağıdaki komut dosyası boş bir liste oluşturacaktır:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
Oysa bu, üzerinde beş figür bulunan bir liste üretecektir.
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
Yukarıdaki belgelerden, bir rakamı kapatmak ve bir pencereyi kapatmak arasındaki farkın ne olduğu net değil. Belki bu açıklığa kavuşacaktır.
Komut dosyasını tam olarak denemek istiyorsanız:
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())
Bellek bir kişi zaten SO'da bir çözüm gönderdi bir endişe ise bkz: Sayılan referans bir rakam oluşturma
pyplot
API altında toplanmıyor .
plt.cla () anlamına gelir açık akım ekseni
plt.clf () şu anki geçerli rakam anlamına gelir
ayrıca, plt.gca () (geçerli ekseni al) ve plt.gcf () (geçerli rakamı al)
Daha fazla bilgiyi buradan edinebilirsiniz: Matplotlib, Pyplot, Pylab vb: Bunlar arasındaki fark ve ne zaman kullanılması gerekir?
close()
bir spesifik olmayan komut, ben rakam kapatılmasını belirtmek için bir yol aramaya başladı (fig.close()
bir işlev değil). Doğru sözdizimi şöyledir:plt.close(fig)
.