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 Figure
klasie. Omówię oba przypadki poniżej.
pyplot
to moduł, który zbiera kilka funkcji, które umożliwiają funkcjonalne użycie matplotlib. Zakładam, że pyplot
został 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ć fig
otrzymana 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 Figure
klasa zapewnia metody kasowania liczb. Przyjmę, że fig
jest to instancja Figure
:
fig.clf()
usuwa całą figurę . To połączenie jest równoważne plt.clf()
tylko wtedy, gdy fig
jest to bieżąca liczba.
fig.clear()
jest synonimem fig.clf()
Zauważ, że nawet del fig
nie 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.clear
Równoważne clf
i Axes.clear
jest 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
pyplot
interfejsu 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)
.