Odpowiedzi:
Wszystkie robią różne rzeczy, ponieważ matplotlib używa hierarchicznej kolejności, w której okno figury zawiera figurę, która może składać się z wielu osi. Dodatkowo istnieją funkcje z interfejsu pyplot i istnieją metody w Figureklasie. Omówię oba przypadki poniżej.
pyplotto moduł, który zbiera kilka funkcji, które umożliwiają funkcjonalne użycie matplotlib. Zakładam, że pyplotzostał zaimportowany jako import matplotlib.pyplot as plt. W tym przypadku istnieją trzy różne polecenia, które usuwają rzeczy:
plt.cla()kasuje osie , tj. aktualnie aktywne osie na bieżącej figurze. Pozostawia pozostałe osie nietknięte.
plt.clf()usuwa całą bieżącą liczbę ze wszystkimi osiami, ale pozostawia otwarte okno, dzięki czemu można go ponownie wykorzystać na innych działkach.
plt.close()zamyka okno , które będzie bieżącym oknem, jeśli nie zostanie określone inaczej.
To, które funkcje najbardziej Ci odpowiadają, zależy od Twojego przypadku użycia.
close()Ponadto funkcja pozwala określić, które okna powinny być zamknięte. Argumentem może być liczba lub nazwa nadana oknu, gdy zostało utworzone za pomocą, figure(number_or_name)lub może być figotrzymana instancja figury , tj fig = figure(). Za pomocą . Jeśli nie podano argumentu close(), aktualnie aktywne okno zostanie zamknięte. Ponadto istnieje składnia close('all'), która zamyka wszystkie liczby.
Dodatkowo Figureklasa zapewnia metody kasowania liczb. Przyjmę, że figjest to instancja Figure:
fig.clf()usuwa całą figurę . To połączenie jest równoważne plt.clf()tylko wtedy, gdy figjest to bieżąca liczba.
fig.clear() jest synonimem fig.clf()
Zauważ, że nawet del fignie zamknie powiązanego okna figury. O ile mi wiadomo, jedynym sposobem zamknięcia okna figury jest użycie plt.close(fig)opisanego powyżej.
clear(), nie widziałem dużej różnicy, tyle cla()że tylko w osiach pasożytów cla()traktowane są specjalnie.
clear()funkcji w moim matplotlib.pyplot(wersja 1.4.2 na MacOS). Czy możesz skierować mnie do powiązanej dokumentacji?
clear()metodę. Figure.clearRównoważne clfi Axes.clearjest odpowiednikiem cla.
Jest tylko zastrzeżenie, które dzisiaj odkryłem. Jeśli masz funkcję, która często wywołuje fabułę, lepiej użyj jej plt.close(fig)zamiast w fig.clf()jakiś sposób pierwsza nie gromadzi się w pamięci. Krótko mówiąc, jeśli chodzi o pamięć, użyj plt.close (rys.) (Chociaż wydaje się, że są lepsze sposoby, przejdź do końca tego komentarza, aby znaleźć odpowiednie linki).
Poniższy skrypt wygeneruje pustą listę:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
Podczas gdy ta utworzy listę z pięcioma cyframi.
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
Z powyższej dokumentacji nie jest dla mnie jasne, jaka jest różnica między zamknięciem figury a zamknięciem okna. Może to wyjaśni.
Jeśli chcesz wypróbować kompletny skrypt, masz:
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())
Jeśli problem dotyczy pamięci, ktoś już opublikował obejście w SO. Zobacz: Utwórz liczbę, która jest liczona jako referencja
pyplotinterfejsu API.
plt.cla () oznacza czystą oś prądu
plt.clf () oznacza wyczyść bieżącą liczbę
jest też plt.gca () (pobierz aktualną oś) i plt.gcf () (pobierz bieżącą liczbę)
Przeczytaj więcej tutaj: Matplotlib, Pyplot, Pylab itp: Jaka jest różnica między nimi a kiedy z nich korzystać?
close()jest to niespecyficzne polecenie, szukałem sposobu na określenie zamknięcia figury (fig.close()nie jest funkcją). Poprawna składnia jest następująca:plt.close(fig).