如何从列表值x和y为sin函数设置动画?

时间:2019-09-05 08:07:51

标签: python-3.x animation jupyter-notebook

我有一个形状为[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()

1 个答案:

答案 0 :(得分:0)

animation.FuncAnimation中的帧数与时间步长数相同。