Python 2.7 函数库难度

Python 2.7 函数库难度,python-2.7,animation,matplotlib,Python 2.7,Animation,Matplotlib,我在Matplotlib中尝试使用FuncAnimation时遇到一些困难。以下是我正在努力实现的目标。我有linexdata和lineydata linexdata = [[0, 0.96663913603170604, 1.8304227404767459], [0, 0.96734736607357541, 1.8288493988572816], [0, 0.96802166208581697, 1.8272797290389486], [0, 0.96866363556090329,

我在Matplotlib中尝试使用FuncAnimation时遇到一些困难。以下是我正在努力实现的目标。我有linexdata和lineydata

linexdata = [[0, 0.96663913603170604, 1.8304227404767459], [0, 0.96734736607357541, 1.8288493988572816], [0, 0.96802166208581697, 1.8272797290389486], [0, 0.96866363556090329, 1.8257115495669918]]
lineydata = [[0, 0.25614211034477896, 0.76000507255964045], [0, 0.253454282564955, 0.76120840368022669], [0, 0.25086662139992305, 0.76240896996548169], [0, 0.24837624915022258, 0.76361296474589158]]
这两份名单的实际长度约为2000年。我只是展示一些数据点来说明我正在尝试做什么

我要显示线条数据的动画

这是我的代码:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

fig = plt.figure(figsize=(7,7));
ax = fig.add_subplot(111, aspect='equal', autoscale_on=False, xlim=(-0.5,3), ylim=(-0.5,3))
ax.grid()
line, = ax.plot([], [], 'o-', lw=2)
line.set_data([], []);

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

def animate(i):
    line.set_data(linexdata[i] ,lineydata[i]);
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20)

plt.show()
输出绘图为空。我不知何故无法使其正常工作,主要是因为我不了解如何使用FuncAnimation,也无法找出错误所在。感谢您的帮助


谢谢。

这里发生的是
FuncAnimation
递归调用
animate
函数。每次它都将用于索引数据的变量i递增1。调用函数时,递归的数量由参数“frames”控制

由于linexdata列表仅包含4个列表,并且考虑到您使用
frames=200
调用了
Funcanimation
,python在前4次调用后使用IndexError崩溃。根据数据大小调整帧数是解决问题的方法

你看不到任何东西的原因(即,甚至连前4行都看不到)是因为我们很快就能看到任何东西
interval=20
意味着两次调用
animate
之间的间隔为20毫秒。例如,将这个数字增加到500将让您看到发生了什么。(为了清晰起见,我可以自由地稍微修改列表,以便两帧之间的更改可以清晰地显示出来)

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

linexdata = [[0, 0.96663913603170604, 1.8304227404767459], [0, 0.96734736607357541, 2.8288493988572816], [0, 0.96802166208581697, 3.8272797290389486], [0, 0.96866363556090329, 4.8257115495669918]]
lineydata = [[0, 0.25614211034477896, 0.76000507255964045], [0, 0.253454282564955, 0.76120840368022669], [0, 0.25086662139992305, 0.76240896996548169], [0, 0.24837624915022258, 0.76361296474589158]]


fig = plt.figure(figsize=(7,7));
ax = fig.add_subplot(111, aspect='equal', autoscale_on=False, xlim=(-0.5,3), ylim=(-0.5,3))
ax.grid()
line, = ax.plot([], [], 'o-', lw=2)
line.set_data([], []);

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

def animate(i):
    line.set_data(linexdata[i] ,lineydata[i]);
    return line,


anim = animation.FuncAnimation(fig, animate, init_func=init, frames=4, interval=500)

plt.show()