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.
interfejs pyplot
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.
metody klasy Figure
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.
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)
.clear()
, nie widziałem dużej różnicy, tylecla()
że tylko w osiach pasożytówcla()
traktowane są specjalnie.clear()
funkcji w moimmatplotlib.pyplot
(wersja 1.4.2 na MacOS). Czy możesz skierować mnie do powiązanej dokumentacji?clear()
metodę.Figure.clear
Równoważneclf
iAxes.clear
jest odpowiednikiemcla
.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 wfig.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ę:
Podczas gdy ta utworzy listę z pięcioma cyframi.
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:
Jeśli problem dotyczy pamięci, ktoś już opublikował obejście w SO. Zobacz: Utwórz liczbę, która jest liczona jako referencja
źródło
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ć?
źródło