FuncAnimation的问题:基于事件的Matplotlib中的动画

时间:2014-09-08 05:58:07

标签: python arrays animation numpy matplotlib

这是一个关于Matplotlib的FuncAnimation方法的简单问题。我已经尝试了一切,但却无法让它发挥作用!

我正在编写一个代码,允许用户在im show plot上选择一条水平线,这样他们就可以看到对应于每个像素(y轴)的数组的评估,其中每个点对应另一个像素预定的numpy数组。 x-数组(x值的集合标记为“lambda_array”,长度为1024,y值标记为“intensity_shaped”,并且为[10] [256] [1024]形状的数组,或者只是[y] [x ] [值]。基本上我希望动画迭代的是intensity_shaped [y] [x + i] [2:values],其中i是迭代器。

这个问题与水平线或事件处理无关,我根本无法使'FuncAnimation'方法正常运行...它创建了一个新窗口,但它没有任何内容。我已经确定了三个可能的假设:1)我可能会误认为函数工作的一个简单步骤2)与numpy数组存在某种不兼容性3)我需要使用'plt.draw'重绘它我是没做......

对于知道如何使用Matplotlib制作动画的人来说,这应该是相对直截了当的。

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

plt.ion()

fig_anim = plt.figure("Animation")
graph, = plt.plot([],[], '-r')

def init_graph():
    graph.set_data((lambda_array), intensity_shaped[5][50][2:]) #<- these are both numpy arrays.
    return graph,


def animate(k):
    graph.set_ydata(intensity_shaped[5][50+k][2:])
    return graph,

def animate_func():
    anim = animation.FuncAnimation(fig_anim,animate,
                             init_func=init_graph,
                             frames =100, interval = 50) 
    plt.draw()
    return anim

animate_func()    #<- this doens't work alone

animation.FuncAnimation(fig_anim,animate,               #<- this doesn't help
                             init_func=init_graph,
                             frames =100, interval = 50) 

plt.show()

0 个答案:

没有答案