Matplotlib动画迭代遍历pandas数据帧列表

3
我有一组带有两列的pandas数据框。到目前为止,我有一个函数,当给定索引i时,它会获取与索引i对应的数据框,并绘制第一列数据和第二列数据之间的图表。
    list = [f0,f1,f2,f3,f4,f5,f6,f7,f8,f9]
    def getGraph(i):
        frame = list[i]
        frame.plot(x = "firstColumn",y = "secondColumn")
        return 0

我的问题是,如何使其迭代帧列表并按顺序显示每个图形,每个图形的显示时间为0.3秒。
最好使用动画库中的FuncAnimation类,它可以为您执行繁重的工作和优化。
1个回答

3
设置动画函数并将其初始化到轴、图像和线条中:
from matplotlib import pyplot as plt
from matplotlib import animation
import pandas as pd

f0 = pd.DataFrame({'firstColumn': [1,2,3,4,5], 'secondColumn': [1,2,3,4,5]})
f1 = pd.DataFrame({'firstColumn': [5,4,3,2,1], 'secondColumn': [1,2,3,4,5]})
f2 = pd.DataFrame({'firstColumn': [5,4,3.5,2,1], 'secondColumn': [5,4,3,2,1]})

# make a global variable to store dataframes
global mylist
mylist=[f0,f1,f2]

# First set up the figure, the axis, and the plot element we want to animate
fig = plt.figure()
ax = plt.axes(xlim=(0, 5), ylim=(0, 5))
line, = ax.plot([], [], lw=2)

# initialization function: plot the background of each frame
def init():
    line.set_data([], [])
    return line,

# animation function of dataframes' list
def animate(i):
    line.set_data(mylist[i]['firstColumn'], mylist[i]['secondColumn'])
    return line,

# call the animator, animate every 300 ms
# set number of frames to the length of your list of dataframes
anim = animation.FuncAnimation(fig, animate, frames=len(mylist), init_func=init, interval=300, blit=True)

plt.show()

了解更多信息,请查看教程:https://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接