我有一个pandas DataFrame列表,每个列有2列。到目前为止,我有一个函数,当给定索引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类,它可以为您提供繁重的工作和优化。
答案 0 :(得分:1)
将animate函数和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/