Определите, отображается ли фигура matplotlib (не была закрыта)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Определите, отображается ли фигура matplotlib (не была закрыта)

Сообщение Anonymous »

При использовании matplotlib в интерактивном режиме мне нужно знать, закрылась фигура или нет. Я отслеживаю дескрипторы фигуры для других целей, но событие закрытия фигуры отделено от этого (закрыто пользователем или существующей базой кода, не знающей об отслеживании). Таким образом, конкретный объект фигуры продолжает существовать, и мне нужно обнаружить, что его фигура (окно) была закрыта (чтобы знать, например, что ее не следует сохранять или что переменную можно очистить).
Ситуация в таком коде (проверено на Python 3.12 с matplotlib 3.9.2):

Код: Выделить всё

import matplotlib
import matplotlib.pyplot as plt

matplotlib.use('qt5agg')
plt.ion()

f1 = plt.figure()
f1.gca().plot(1, 1, 'ro')
print(f1.number)  # 1

f2 = plt.figure()
f2.gca().plot(1, 1, 'bo')
print(f2.number)  # 2

plt.pause(5)

plt.close(f2)

f3 = plt.figure()
f3.gca().plot(1, 1, 'go')
print(f3.number)  # also 2 !!!!

# now we want to save only the figures that have not been closed

# if not closed f1
f1.savefig('f1.png')

# if not closed f2 --- how to find, that f2 is closed and not execute the next line?
f2.savefig('f2.png')

# if not closed f3
f3.savefig('f3.png')
Все решения, которые я нашел (например, здесь), предлагают использовать plt.fignum_exists(), который нельзя использовать в общей ситуации, когда позже создаются дополнительные фигуры, как fignums закрытых фигур похоже переработано.

Подробнее здесь: https://stackoverflow.com/questions/792 ... een-closed
Реклама
Ответить Пред. темаСлед. тема

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

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»