我正在尝试使用python进行一些动画,并在完成this教程的“动画”部分时发现了一些奇怪的东西。 相关代码:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
fig.set_dpi(100)
fig.set_size_inches(7, 6.5)
ax = plt.axes(xlim=(0, 10), ylim=(0, 10))
patch = plt.Circle((5, -5), 0.75, fc='y')
def init():
patch.center = (5, 5)
ax.add_patch(patch)
return patch,
def animate(i):
x, y = patch.center
x = 5 + 3 * np.sin(np.radians(i))
y = 5 + 3 * np.cos(np.radians(i))
patch.center = (x, y)
return patch,
anim = animation.FuncAnimation(fig, animate,
init_func=init,
frames=360,
interval=20,
blit=True)
plt.show()
在我的电脑上,python脚本显示两个圆圈而不是一个圆圈,其中一个固定在(5,5)。经过一番搜索,我发现init()
函数被调用了两次。这似乎始终如一 - 我在matplotlib示例中添加了对simple_anim脚本的init()
函数的打印“测试”调用,如下所示:
def init():
print "test"
line.set_ydata(np.ma.array(x, mask=True))
return line,
得到了
pedsb@pedsb:~/shook_/PSM.Application.Simulation$ python simple_anim.py
test
test
这是预期的行为吗?如何修复教程中的代码,以便只显示一个圆圈?我可以将初始patch.center
设置为屏幕外的某个地方,但我不太喜欢那个“解决方案”。