一尘不染

matplotlib动画线条图保持空白

python

我试图遵循此处的基本动画教程并对其进行调整以显示已经计算出的数据集,而不是每帧都对函数进行评估,但是却陷入了困境。我的数据集包含列表中包含的随时间的XY坐标,satxpos并且satypos我试图创建一个动画,使其跟踪从数据集的开头到结尾的一条线,每0.1秒显示1个新点。对我要去哪里有帮助吗?

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

Code here creates satxpos and satypos as lists

fig = plt.figure()
ax = plt.axes(xlim=(-1e7,1e7), ylim = (-1e7,1e7))
line, = ax.plot([], [], lw=2)

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

def animate(i):
    line.set_data(satxpos[i], satypos[i])
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames = len(satxpos), interval = 1, blit=True)

编辑:该代码运行时没有错误,但是生成了一个空白的绘图窗口,其中没有显示点/线并且没有动画。数据集已正确生成,并且在静态图中的视图良好。


阅读 151

收藏
2021-01-20

共1个答案

一尘不染

为了“跟踪从数据集的开头到结尾的一行”,您将对数组进行索引,以使每个时间步长包含一个以上的元素:

line.set_data(satxpos[:i], satypos[:i])

(注意:!)

代码中的所有其他内容看起来都很好,因此通过上述操作,您应该获得并扩展了线图。然后,您可能希望将其设置interval为大于1的值,因为这将意味着1毫秒的时间步长(可能太快了)。我想使用interval = 40可能是一个好的开始。

2021-01-20