使用OOP方法绘制快速变化的数据

时间:2019-06-20 10:21:50

标签: python matplotlib

我正在尝试绘制算法每次迭代的结果(非常快地获得数据点)。我已经看过matplotlib.animation和使用其他软件包的一堆解决方案,但是它们都不使用OOP方法。

我想到了以下代码:

import matplotlib.animation as animation
import random


class LivePlot:

    def __init__(self, title, x_label, y_label):
        self.x = []
        self.y = []

        self.fig = plt.figure()
        self.ax = self.fig.add_subplot(1, 1, 1)

        # Create a blank line (will be updated in animate)
        self.line, = self.ax.plot([], [])

        # Add labels
        plt.xlabel(x_label)
        plt.ylabel(y_label)
        plt.title(title)

        self.anim = animation.FuncAnimation(self.fig, self.animate,
                                            init_func=self.__init,
                                            blit=True)

    def __init(self):
        self.line.set_data([], [])
        return self.line,

    def animate(self, i):

        # Update line with new Y values
        self.line.set_data(self.x, self.y)

        return self.line,

    # Set up plot to call animate() function periodically
    def plot(self, xs, ys):
        self.x.append(xs)
        self.y.append(ys)
        plt.show()


if __name__ == '__main__':
    pl = LivePlot(title='test', x_label='iter', y_label='score')
    for x in range(100):
        y = random.randint(1,4)
        pl.plot(x, y)

它不起作用,绘图窗口几乎立即消失而没有绘制任何数据。

0 个答案:

没有答案