是什么导致调用FuncAnimation函数?

时间:2017-06-16 15:27:14

标签: python animation matplotlib plot charts

我有一个对象A来实例化一个对象B,并且它的构造函数中有一个对象B

self.ani = animation.FuncAnimation(
            self.figure, func=self.gen_data, fargs=[self.data_dict],
            blit=True, repeat=False)

但是,self.gen_method永远不会被调用。我该怎么做以确保不是这种情况?

我最终做的是将上面的代码放在一个在对象A中触发的回调中,然后在对象refresh()上调用B方法,但我不想要继续重建动画。应该有一种方法只构建一次,但是如何?

那么解决方案是什么,如何确保定期调用func

1 个答案:

答案 0 :(得分:0)

这是Minimal, Complete, and Verifiable example使用完全您的代码并且工作得很好:

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

class A():
    def __init__(self):
        self.b = B()

class B():
    def __init__(self):
        self.figure = plt.figure()
        plt.axis((0,1,0,1))
        self.l1, = plt.plot([],[], color="r")
        self.data_dict = np.random.rand(40,10)
        self.ani = animation.FuncAnimation(
            self.figure, func=self.gen_data, fargs=[self.data_dict],
            blit=True, repeat=False)

    def gen_data(self, _, data):
        self.l1.set_data(np.linspace(0,1,10), data[_%40,:])
        return self.l1,

a = A()
plt.show()