为什么FuncAnimation中帧中的第一个迭代器重复



我正在FuncAnimation上运行一个简单的测试,这时我注意到帧中的第一个索引正在重复。这是我的代码:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt 
import matplotlib.animation as animation
fig = plt.figure( figsize=(10,6) ) 
ax = fig.add_subplot(111, projection='3d')
Writer = animation.writers['ffmpeg']
writer = Writer(fps=20, metadata=dict(artist='Me'))
def animate(i):
x = np.linspace(0, 2*np.pi, 120)
y = np.cos(i*x)
z = x 
ax.clear()
print(i)
im = ax.plot(x, y, z)
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=range(5), repeat=False, blit=False)
ani.save("movie.mp4", writer=writer)
plt.show()

当我运行这个程序时,我得到以下输出:

0
0
1
2
3
4

我不明白的是,为什么0在输出中出现两次?

原因是,您没有将init_func属性传递到FuncAnimation。文件中的这句话解释了为什么:

init_func:可调用,可选一种用于绘制清晰框架的函数。如果没有给出将使用从框架序列中的第一个项目进行绘制。这函数将在第一帧之前调用一次。

因此,当您开始动画时,第一帧总是作为init_func的结果绘制的。您可以设置自定义init_func,它在动画开始时调用。

最新更新