Очистка графиков в Matplotlib: когда использовать cla(), clf(), close()

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Python
Скопировать код
plt.cla()   # Очистка текущих осей, при этом фигура остаётся без изменений.
plt.clf()   # Полная очистка фигуры, но окно при этом не закрывается.
plt.close() # Закрытие окна с фигурой, а также освобождение использованных ресурсов.

В процессе визуализации данных иногда возникает необходимость очистить результаты прошлых графиков. plt.cla() полезен, когда требуется обновить элементы графика, картину в целом при этом не меняя. Если нужно полностью очистить фигуру, применяйте plt.clf(). Когда работа с графиком завершена и требуется освободить память, к вашим услугам plt.close().

Пример:

Python
Скопировать код
# Рисование, стирание, повторное рисование — словно игра в Этч-А-Скетч
plt.plot(...)  # Рисуем первый график
plt.cla()      # Оси очищаем, холст на своём месте, правда, не отображается
plt.plot(...)  # Подготавливаем новый график на старой основе

# Всё сначала, будто это новое творческое начинание
plt.clf()      # Полностью очищаем фигуру
plt.plot(...)  # Строим новый график

# Финальный аккорд!
plt.close()    # Закрываем окно с графиком, а также освобождаем ресурсы памяти

Давайте подробнее рассмотрим эти команды и их использование в различных ситуациях.

Кинга Идем в IT: пошаговый план для смены профессии

Интерактивное построение графиков: cla() и clf()

При работе с графиками в интерактивном режиме или в таких средах, как Jupyter Notebooks, может возникнуть необходимость их частого обновления. plt.cla() и plt.clf() будут незаменимыми инструментами в таких случаях, обеспечивая эффективную перерисовку и предотвращая излишнее накапливание данных в памяти.

Управление памятью с применением close()

При создании множества графиков в рамках одного цикла важно следить за использованием памяти. В таких ситуациях не забывайте вызывать plt.close(fig) после каждого цикла для освобождения памяти и избегания утечек. Эффективнее переиспользовать уже созданные графики, чем каждый раз создавать новые.

Сохранение графика перед удалением

Если требуется сохранить график до его очистки, используйте fig.savefig() до вызова clf() или close(). Так можно "запечатлеть" последний вариант ваших данных, прежде чем их история будет окончена.

Визуализация

cla(), clf() и close() образуют своего рода службу по уборке в мире визуализации данных:

cla() — удаляет рисунки, оставляя холст голым:

До применения: [🌟🌳🏞] После применения:

clf() — подготавливает абсолютно новый холст для вашего творчества:

До применения: [🌟🌳🏞] После применения: [🆕]

close() — делает финальный шаг, удаляя график и забирая его из вашего внимания:

До применения: [🎨 на выставке] После применения: [🚪 закрыто]

Стратегии уборки

Повторное использование фигур

Воспользовавшись командой fig.clf() или её аналогом fig.clear(), можно эффективно управлять использованием памяти. Это положительно сказывается на производительности вашей среды.

Быстрая очистка сеанса

При необходимости очищения всех существующих фигур используйте plt.close('all'). Эта команда актуальна после завершения всех ваших экспериментов с визуализацией.

Выбор подходящей команды для очистки

Выбирая способ очистки графика — cla(), clf() или close() — руководствуйтесь тем, что вы планируете делать с вашим продуктом: перерисовку, создание с нуля или полное завершение работы.

Полезные материалы

  1. Когда нужно использовать cla(), clf() или close() для очистки графика – Stack Overflow
  2. matplotlib.pyplot.clf — Документация Matplotlib 3.8.2
  3. matplotlib.pyplot.cla — Документация Matplotlib 3.8.2
  4. matplotlib.pyplot.close — Документация Matplotlib 3.8.2
  5. Эффективное использование Matplotlib – Practical Business Python
  6. Учебное пособие по Matplotlib: Визуализация упоминаний о Trump, Clinton и Sanders – Dataquest
  7. Использование интерактивных результатов в Jupyter notebooks для управления очисткой графиков – Руководство IPython