尝试使用matplotlib动画函数在python3中一次动画多个对象。
下面写的代码是我到目前为止的地方。我能够创建多个对象并在图中显示它们。我通过使用包含矩形的补丁函数的for循环来完成此操作。从这里开始,我希望通过使用动画功能将所有单个矩形移动一定量。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.animation as animation
fig = plt.figure()
ax = fig.add_subplot(111)
plt.xlim(-100, 100)
plt.ylim(-100, 100)
width = 5
bars = 25
RB = [] # Establish RB as a Python list
for a in range(bars):
RB.append(patches.Rectangle((a*15-140,-100), width, 200,
color="blue", alpha=0.50))
def init():
for a in range(bars):
ax.add_patch(RB[a])
return RB
def animate(i):
for a in range(bars):
temp = np.array(RB[i].get_xy())
temp[0] = temp[0] + 3;
RB[i].set_XY = temp
return RB
anim = animation.FuncAnimation(fig, animate,
init_func=init,
frames=15,
interval=20,
blit=True)
plt.show()
目前,运行代码后没有任何动作或发生。我试图按照python网站上的例子进行操作;但它通常会导致属性错误:'列表'对象没有属性' set_animated''。
答案 0 :(得分:1)
你必须使用
RB[i].set_xy(temp)
而不是set_XY = temp
答案 1 :(得分:0)
RB中的索引实际上是错误的。您应该将animate函数更改为:
def animate(i):
for a in range(bars):
temp = RB[a].get_x() + 3
RB[a].set_x(temp)
return RB