我有一个形状为[0:10,0:100]的y值数组,用于在10个不同的时间步长移动一个正弦图,我想为变化的运动设置动画。我正在从.dat文件中拉出阵列。
我在jupyter笔记本电脑上使用MacOSX,安装了ffmpeg,并且以前有动画工作,但不完全是这样。 我使用了文档示例来构造代码,该代码也是一个sin图,但使用了一个函数来表示y的值而不是数组。
data = np.loadtxt("data.dat")
n = int(len(data)) # = 21
fig = plt.figure()
ax = plt.axes(xlim=(0, 2*np.pi), ylim=(0, 1))
line, = ax.plot([], [], lw=2)
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0,2*np.pi,n)
y = data[i]
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=n, interval=20, blit=True)
anim.save('movie.mp4', fps=30)
该代码中的错误是
ValueError: shape mismatch: objects cannot be broadcast to a single shape
似乎起源于anim.save()
。
答案 0 :(得分:0)
将animation.FuncAnimation
中的帧数与时间步长数相同。