Python动画更新

时间:2017-02-02 19:24:30

标签: python animation matplotlib

我为动画编写了一个简单的python代码。代码创建随机点,然后在动画期间绘制它们。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

x = 10*np.random.rand(10,1)
y = 10*np.random.rand(10,1)


fig = plt.figure()
ax  = plt.axes(aspect='equal',xlim =(-10,10), ylim = (-10,10))
plts = ax.plot([], [], 'o-')

def init():
  plts.set_data([],[])
  return plts

def animate(num,x,y,plots,skip):
    plts[0].set_data(x[:num*skip],y[:num*skip])
    return plts

skip = 1
ani = animation.FuncAnimation(fig, 
                              animate, 
                              frames=10, 
                              fargs =(x,y,plts,skip),
                              interval=1000)


plt.show()

在动画期间,代码会绘制所有点。 有人能告诉我如何只绘制一帧中的一个点并清除前一点吗? Random point plot animation output

1 个答案:

答案 0 :(得分:1)

当您绘制列表中的所有点时,最多为索引num*skip。每帧num增加1,因此绘制了一个额外的点。

为了仅绘制num点,只需使用

plts[0].set_data(x[num],y[num])