清理 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()
我有一个带有基本线图的基本动画,又名 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()