【问题标题】:matplotlib animation without predefined list?没有预定义列表的 matplotlib 动画?
【发布时间】:2023-01-08 01:21:07
【问题描述】:

我目前有一个模拟过程,可以在每次迭代时输出一个数据点。我想用 matplotlib 对此进行动画处理,但不确定是否可以使用 matplotlib.animation。

我遇到的许多在线教程/示例总是以预定义点列表开头,例如x = [1,2,3,4,5], y=[5.5,3.6,7.1,2.2,3.3],并基本上为这个列表设置动画。从技术上讲,这对我也适用,但我必须首先运行模拟并将结果附加到列表 x 和 y 中,然后在这些列表上运行动画过程(这将需要再次遍历列表,这在理想情况下毫无意义它应该与模拟阶段一起制作动画。)如果我用数百万次迭代运行模拟,这将很麻烦。

我想知道 mpl.animation 是否可以在数据出现时对其进行动画处理,例如从 x=[], y=[] 开始,然后在第一次迭代中我们得到 x=[0.1], y=[3.3] 并为此设置动画,然后在第二次迭代中我们得到 x=[0.1,0.52], y =[3.3,4.4] 然后我们再次制作动画,依此类推,而不是要求在制作动画之前先填充整个列表。

【问题讨论】:

    标签: python matplotlib animation time-series real-time


    【解决方案1】:

    为什么不试试呢?

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.animation as animation
    
    
    fig = plt.figure()
    pltdata, = plt.plot([], [])
    plt.ylim(-1.1,1.1)
    plt.xlim(0,200)
    
    def animate(i):
        x=np.arange(i, i*2+2)
        y=np.sin(x*0.1)
        pltdata.set_data(x, y)
        return [pltdata]
    
    theAnim = animation.FuncAnimation(fig, animate, frames=100, interval=100, blit=True, repeat=False)
    plt.show()
    

    如您所见,它不是预定义的列表(本示例可能是预定义列表,但事实并非如此。第一个图是常量 [] 列表。然后 xy 每次都从头开始重新计算animate 电话)。

    并按预期工作。 (与动画一样,必须注意xlimylim,因为如果自动选择它们,由于开始时没有数据,它们将不适合未来的未知数据)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2017-06-21
      • 2015-01-08
      相关资源
      最近更新 更多