Как сделать задержку в matplotlib python

У меня есть две аннотации:

list_time_1 = [100, 20, 30, 60, 10]

a_1 = plt.annotate("максимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(max(list_time_1)), max(list_time_1)), xytext=(0, 50))
a_2 = plt.annotate("минимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(min(list_time_1)), min(list_time_1)), xytext=(0, 10))

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

Как сделать задержку?
Пробовал sleep, keyboard.waitkey() ничего не работает.

Вот код полностью:

from matplotlib import pyplot as plt

plt.title("Анализ")
plt.xlabel("Номер")
plt.ylabel("Время")

plt.plot(list_time_1, label="Ваше время", color="k", ls="-", lw="4", marker="o", mec="m", mfc="m", ms="8")

plt.plot([60 for i in range(len(list_time_1))], label="среднее значение", color="b", ls="--", lw="4", mec="m", mfc="m")

a_1 = plt.annotate("максимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(max(list_time_1)), max(list_time_1)), xytext=(0, 50))

a_2 = plt.annotate("минимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(min(list_time_1)), min(list_time_1)), xytext=(0, 10))

Ответы (1 шт):

Автор решения: S. Nick

Я не уверен, что правильно понял то, что вы хотите сделать,
но как вариант предложу попробовать:

matplotlib.pyplot.pause

Запустите цикл событий графического интерфейса на интервал секунд.

from matplotlib import pyplot as plt

list_time_1 = [100, 20, 30, 60, 10]

plt.title("Анализ")
plt.xlabel("Номер")
plt.ylabel("Время")

plt.plot(list_time_1, label="Ваше время", color="k", ls="-", lw="4", marker="o", mec="m", mfc="m", ms="8")
plt.pause(1.5)


plt.plot([60 for i in range(len(list_time_1))], label="среднее значение", color="b", ls="--", lw="4", mec="m", mfc="m")
plt.pause(2.0)
a_1 = plt.annotate("максимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(max(list_time_1)), max(list_time_1)), xytext=(0, 50))
plt.pause(0.5)
a_2 = plt.annotate("минимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(min(list_time_1)), min(list_time_1)), xytext=(0, 10))


plt.show()

введите сюда описание изображения



Update:

Я наверное не уточнил, но мне нужно что-то по типу анимации.
Показывается одна аннотация и через некоторое время её заменяет другая.
Можно ли как-то обойтись без matplotlib.animation?

Вы можете удалить artist, используя метод remove().

from matplotlib import pyplot as plt

list_time_1 = [100, 20, 30, 60, 10]

plt.title("Анализ")
plt.xlabel("Номер")
plt.ylabel("Время")

plt.plot(list_time_1, label="Ваше время", color="k", ls="-", lw="4", marker="o", mec="m", mfc="m", ms="8")
plt.pause(1.5)

plt.plot([60 for i in range(len(list_time_1))], label="среднее значение", color="b", ls="--", lw="4", mec="m", mfc="m")
plt.pause(2.0)

a_1 = plt.annotate("максимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(max(list_time_1)), max(list_time_1)), xytext=(0, 50))
plt.pause(0.5)                            
a_1.remove()                                          # <-------------- 

a_2 = plt.annotate("минимальное значение", arrowprops=dict(facecolor="m"), xy=(list_time_1.index(min(list_time_1)), min(list_time_1)), xytext=(0, 10))


plt.show()

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка