Все они делают разные вещи, так как matplotlib использует иерархический порядок, в котором окно рисунка содержит фигуру, которая может состоять из множества осей. Кроме того, есть функции из интерфейса pyplot и есть методы для Figure
класса. Я буду обсуждать оба случая ниже.
интерфейс pyplot
pyplot
это модуль, который собирает несколько функций, которые позволяют функционально использовать matplotlib. Я здесь предполагаю, что pyplot
был импортирован как import matplotlib.pyplot as plt
. В этом случае есть три разные команды, которые удаляют вещи:
plt.cla()
очищает оси , то есть текущие активные оси на текущем рисунке. Это оставляет другие оси нетронутыми.
plt.clf()
очищает всю текущую фигуру со всеми ее осями, но оставляет окно открытым, чтобы его можно было использовать для других графиков.
plt.close()
закрывает окно , которое будет текущим, если не указано иное.
То, какие функции подходят вам лучше всего, зависит, таким образом, от вашего варианта использования.
Кроме close()
того, функция позволяет указать, какое окно должно быть закрыто. Аргумент может быть либо номером, либо именем, заданным окну, когда оно было создано с помощью, figure(number_or_name)
или это может быть fig
полученный экземпляр фигуры , то есть с помощью fig = figure()
. Если аргумент не указан close()
, текущее активное окно будет закрыто. Кроме того, есть синтаксис close('all')
, который закрывает все цифры.
методы класса Figure
Кроме того, Figure
класс предоставляет методы для очистки фигур. Я предполагаю в следующем, что fig
это экземпляр Figure
:
fig.clf()
очищает всю фигуру . Этот вызов эквивалентен plt.clf()
только если fig
это текущая цифра.
fig.clear()
это синоним fig.clf()
Обратите внимание, что даже del fig
не закроет связанное окно рисунка. Насколько я знаю, единственный способ закрыть окно рисунка - это использовать plt.close(fig)
как описано выше.
close()
это неспецифическая команда, я искал способ указать закрытие фигуры (fig.close()
это не функция). Правильный синтаксис:plt.close(fig)
.clear()
, я не видел большой разницыcla()
только с тем, что в осях паразитов толькоcla()
лечится специально.clear()
моей функции нетmatplotlib.pyplot
(Версия 1.4.2 на MacOS). Не могли бы вы направить меня к соответствующей документации?clear()
метод.Figure.clear
Эквивалентclf
иAxes.clear
эквивалентенcla
.Есть только одна оговорка, которую я обнаружил сегодня. Если у вас есть функция, вызывающая график много раз, лучше использовать ее,
plt.close(fig)
а неfig.clf()
каким-либо образом, первая не накапливается в памяти. Короче говоря, если речь идет о памяти, используйте plt.close (рис.) (Хотя кажется, что есть более эффективные способы, перейдите к концу этого комментария для соответствующих ссылок).Таким образом, следующий скрипт создаст пустой список:
Принимая во внимание, что этот произведет список с пятью числами на этом.
Из документации выше мне не ясно, в чем разница между закрытием фигуры и закрытием окна. Может быть, это прояснит.
Если вы хотите попробовать полный сценарий, у вас есть:
Если память вызывает беспокойство, кто-то уже опубликовал обходной путь в SO, см. Создание фигуры с подсчетом ссылок.
источник
pyplot
API.plt.cla () означает очистить текущую ось
plt.clf () означает очистить текущий рисунок
также есть plt.gca () (получить текущую ось) и plt.gcf () (получить текущую фигуру)
Подробнее читайте здесь: Matplotlib, Pyplot, Pylab и т. Д. Какая разница между ними и когда их использовать?
источник