2017-08-08 95 views
0

我有一个每列有2列的熊猫DataFrames的列表。到目前为止,我有一个函数,当给定索引i时,它将采用与索引i对应的帧,并绘制第一列的数据与第二列的数据的图形。迭代遍历熊猫数据框列表的Matplotlib动画

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类,它为您做了繁重的工作和优化。

回答

0

集动画功能和init到轴,图形和线条:

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/