清理 Matplotlib stackplot 动画中的背景

Cleaning background in Matplotlib stackplot animation

我有一个带有基本线图的基本动画,又名 ax.plot(...)。我对其进行了修改,使其生成堆栈图而不是线图(下面的代码片段)。

问题是情节似乎不再每次迭代都清理背景。您可以在下图中最顶层的棕色层中看到这一点。尽管其余情节正在更新,但仍然可以看到原始情节从未被删除从顶部突出。

如何让背景在每次迭代时都刷新?

这是一个代码片段:

class Display:
    def __init__(self):
        self.fig, self.ax = plt.subplots()
        self.data = None
        self.lines = []

    def animate(self, i):
        get_data() # This is connected to a random number generator that changes each value a few points at a time

        for index, line in enumerate(self.lines):
            [self.lines[index]] = self.ax.stackplot(range(0, len(self.data[index])), self.data[index])
        return self.lines

    def start(self, data):
        self.data = data

        for index, data in enumerate(self.data):
            self.lines += self.ax.stackplot(range(len(data)), data)

        ani = animation.FuncAnimation(self.fig, self.animate, interval=5, blit=True)
        plt.show()

我找到了解决方法。对于某些类型的情节,情节的初始状态似乎不会被删除。 所以你可以绕过这个问题,但从一个空白图开始:

    def start(self, data):
        self.data = data

        for index, data in enumerate(self.data):
            self.lines += self.ax.stackplot([], [])

        ani = animation.FuncAnimation(self.fig, self.animate, interval=5, blit=True)
        plt.show()