我正在尝试使用Matplotlib的FuncAnimation
来动画显示每帧动画中的一个点。
# modules
#------------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as py
from matplotlib import animation
py.close('all') # close all previous plots
# create a random line to plot
#------------------------------------------------------------------------------
x = np.random.rand(40)
y = np.random.rand(40)
py.figure(1)
py.scatter(x, y, s=60)
py.axis([0, 1, 0, 1])
py.show()
# animation of a scatter plot using x, y from above
#------------------------------------------------------------------------------
fig = py.figure(2)
ax = py.axes(xlim=(0, 1), ylim=(0, 1))
scat = ax.scatter([], [], s=60)
def init():
scat.set_offsets([])
return scat,
def animate(i):
scat.set_offsets([x[:i], y[:i]])
return scat,
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=len(x)+1,
interval=200, blit=False, repeat=False)
字符串
不幸的是,最终的动画图与原始图不一样。动画图在每帧动画中也会 Flink 几个点。关于如何使用animation
软件包正确动画散点图,有什么建议吗?
2条答案
按热度按时间2w2cym1i1#
您的示例的唯一问题是如何在
animate
函数中填充新坐标。set_offsets
需要Nx2
ndarray,而您提供了两个1d数组的元组。所以就用这个:
字符串
要保存动画,您可能需要调用:
型
okxuctiv2#
免责声明,我写了一个库,试图使这很容易,但使用
ArtistAnimation
,称为celluloid。你基本上写你的可视化代码作为正常和简单的图片后,每帧绘制。这里有一个完整的例子:字符串
的数据