Python FuncAnimation无法识别更新

时间:2016-08-23 18:09:53

标签: python animation matplotlib

我正在学习如何在python中为我的一个项目制作动画,并且我的代码基于here中的以下示例。

我对他们的代码的调整如下:

import numpy as np
import h5py, os, glob, sys, time
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

def update(i):
    for j in np.arange(0,10):
        for k in np.arange(0,10):
            for channel in ["N","E"]:
                x = some_x_value
                y = some_y_value
                line = plt.loglog(x,y)
                ax.set_xlabel(label)
    return line, ax


if __name__ == "__main__":
    fig, ax = plt.subplots()
    anim = FuncAnimation(fig, update, frames=np.arange(0,10), interval=200)
    anim.save('Test.gif', dpi=80, writer='imagemagick')

当我尝试运行脚本时,我收到以下错误: 名称错误:未定义名称“更新”。

正如我之前所说,我仍然在学习如何制作动画,并且不理解我发现的代码教程中发生的所有事情。但是,我很困惑为什么更新根本不被识别,因为我调用update的方式似乎与教程中的内容完全相同。

1 个答案:

答案 0 :(得分:0)

import numpy as np
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation


def update(i, ln):
    i = i+1
    x = i
    y = i ** 2
    x_data = ln.get_xdata()
    y_data = ln.get_ydata()
    ln.set_data(np.concatenate(([x], x_data)),
                np.concatenate(([y], y_data)))
    return ln


if __name__ == "__main__":
    fig, ax = plt.subplots()
    ax.set_xlim(1, 10)
    ax.set_ylim(1, 100)
    line, = ax.loglog([1], [1])
    anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200,
                         fargs=(line, ))
    anim.save('Test.gif', dpi=80, writer='imagemagick')

按预期工作。这让我觉得你的代码中还有一些其他错误被掩盖了。