Я обнаружил странную проблему с FuncAnimation в matplotlib при использовании блиттинга.Следующий код представляет собой минимальный рабочий пример, который перемещает точку вдоль синусоидальной линии.Проблема заключается в том, что после интерактивного масштабирования / панорамирования оси перерисовываются, но линейный график остается в своем исходном положении на экране.Кажется, что по какой-то причине зум / панорамирование не запускает новую инициализацию блитинга.Я использую бэкэнд Qt5Agg с matplotlib 3.0.2, но проблема также присутствует в бэкенде TkAgg.Возможный обходной путь - заставить функцию update также вернуть линейный график.Однако это как-то срывает идею блинтинга.Знаете ли вы лучшее решение этой проблемы?
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.animation
t = np.linspace(0, 10, 100)
y = np.sin(t)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
line, = ax.plot(t, y)
point, = ax.plot(0, 0, 'o')
def update(i):
point.set_data([t[i], y[i]])
return point,
ani = mpl.animation.FuncAnimation(fig, update, frames=t.size, blit=True)
plt.tight_layout()
plt.show()