我试图遵循位于here的基本动画教程,并对其进行调整以显示已计算的数据集,而不是每帧都计算一个函数,但我遇到了问题。我的数据集包含XY坐标,包含在列表satxpos
和satypos
我正在尝试创建一个动画,以便它跟踪一条从数据集开头到结尾的直线,每0.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)
编辑:代码运行时没有错误,但是生成一个空白的绘图窗口,没有显示点/线,也没有动画。数据集生成正确,在静态图中查看良好。在
为了“跟踪从数据集开始到结尾的一行”,您需要对数组进行索引,以使每个时间步包含一个以上的元素:
(注意
:
!)在代码中的其他所有内容看起来都很好,通过上面的操作,您应该得到并扩展线图。然后,您可能希望将
interval
设置为大于1的值,因为这意味着1千秒时间步(可能有点太快)。我想使用interval = 40
可能是个好的开始。在你的代码看起来是正确的!只要satxpos和satypos都正确配置和初始化,我相信其他一切都是有效的!在
问题中没有显示的代码的一部分是调用}函数,这两个函数都是代码工作所必需的(根据您共享的教程!)在
anim.save()
和{因此,您需要添加以下内容:
在你的代码的末尾创建动画(我想,并展示它)!在
希望有帮助!在
Source - Matplotlib Animation Tutorial
我看到你提到“生成satxpo和satypos的部分确实创建了有效的数据集。我可以把它们看作一个静态的情节。但我猜问题还是源于你的}。在
satxpos
和{解决问题的一种方法是用}就没有您声称的那样有效。在
line.set_data(satxpos[i], satypos[i])
替换两个函数和动画代码。将i
设置为0
,1
。。。看看你能不能看到情节。如果不是,则您的satxpos
和{例如,有效的}可以如下所示:
satxpos
和{这与您提供的代码一起工作,从而表明您向我们展示的代码是正确的。在
根据评论进行编辑:
如果您的
satxpos
和satypos
只是np.linespace
,那么动画循环将只得到一个带有(satxpos[i], satypos[i])
的点,并且如果没有marker='o'
这样的设置,您将看不到绘图上的点。因此,在动画中看不到任何内容。在相关问题 更多 >
编程相关推荐