问题解释: 我想为从数组接收的值设置动画多边形(在我的简单示例中,它是一个移动的正方形)。我想保持多边形的 x 和 y 值可变。不要担心多边形做了什么运动。这只是一个例子。需要使用“set_xy()”,就像在“使用 matplotlib的动画转换多边形”的解决方案中一样。
目标-> 在每个动画帧中,我想从数组 (P1x,P1y,P2x,P2y,...) 加载多边形值并更新图形。
问题: 在我的代码中,我仍然有使用补丁的问题。我正在尝试使用索引 i 更新多边形值。我必须如何定义补丁?这是否必须在动画调用之前完成?
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()
非常感谢你的帮助!
忽然笑
相关分类