Добрый день!
Объяснение проблемы:
Я хочу анимировать полигон, значения которого я получаю из массива (в моем простом примере это движущийся квадрат). Я хочу, чтобы значения х и у полигона были изменяемыми. Не беспокойтесь о том, что делает полигон. Это всего лишь пример. Требуется работа с "set_xy ()", как в решении из анимации ' для перевода полигона с использованием matplotlib '.
Цель -> в каждом кадре анимации я хочу загрузить значения Polygon из массивов (P1x, P1y, P2x, P2y, ...) и обновить рисунок.
Вопрос:
В моем коде у меня все еще есть проблемы с патчами. Я пытаюсь обновить значения полигона с индексом я. Как мне определить патч? Это должно быть сделано перед вызовом анимации?
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
import matplotlib.patches as patches
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(-10,10)
ax.set_ylim(-10,10)
P1x=[0.0,0.5,1.0,1.5,2.0,2.5,3.0]
P1y=[0.0,0.0,0.0,0.0,0.0,0.0,0.0]
P2x=[1.0,1.5,2.0,2.5,3.0,3.5,4.0]
P2y=[0.0,0.0,0.0,0.0,0.0,0.0,0.0]
P3x=[1.0,1.5,2.0,2.5,3.0,3.5,4.0]
P3y=[1.0,1.0,1.0,1.0,1.0,1.0,1.0]
P4x=[0.0,0.5,1.0,1.5,2.0,2.5,3.0]
P4y=[1.0,1.0,1.0,1.0,1.0,1.0,1.0]
def init():
return patch,
def animate(i):
v = np.array([
[P1x[i], P1y[i]],
[P2x[i], P2y[i]],
[P3x[i], P3y[i]],
[P4x[i], P4y[i]]
])
patch=patches.Polygon(v,closed=True, fc='r', ec='r')
return patch,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 5), init_func=init,
interval=1000, blit=True)
plt.show()
Большое спасибо за вашу помощь!