首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -用matplotlib动画化大型数据集

Python -用matplotlib动画化大型数据集
EN

Stack Overflow用户
提问于 2020-03-17 17:31:27
回答 1查看 642关注 0票数 1

对于一个个人项目,我试图动画一个相当大的数据集(1000行),以显示多鸟潜水在木星笔记本。最后,我还想添加加速数据的子图。

我使用简单的示例作为粗略的模板,例如在:https://towardsdatascience.com/animations-with-matplotlib-d96375c5442c中的增长线圈示例。

代码本身似乎运行缓慢但很好,但是它没有输出动画,只是一个静态图:

以下是我的当前代码:

代码语言:javascript
复制
x = np.array(dives.index)
y = np.array(dives['depth'])
x_data, y_data = [], []

fig = plt.figure()
ax = plt.axes(xlim=(0, 1000), ylim=(min(y),max(y)))
line, = ax.plot([], [])

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

def animate(i):
    x_data.append(x[i])
    y_data.append(y[i])
    line.set_data(x, y)

    return line,

plt.title('Bird Dives') 

ani = animation.FuncAnimation(
    fig, animate, init_func=init, frames= 1000, interval=50, blit=True)

ani.save('./plot-test.gif')
plt.show()

为什么它只是在绘制一个图形而不是一个动画呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-17 18:11:12

是的,您的错误在您的animate函数中。您有line.set_data(x, y),它在每个帧上绘制xy的全部内容(从而生成一个不改变的动画图)。

您打算在animate函数中使用的是line.set_data(x_data, y_data)

至于性能:您可以通过不创建空列表并在每次迭代时追加到它来改进这一点。相反,将原始数组( xy )切片更简单。请考虑下面的animate函数:

代码语言:javascript
复制
def animate(i):
    line.set_data(x[:i], y[:i])
    return line,

话虽如此,考虑到你有一千帧,它还需要一段时间才能运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60727381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档