我写了一个简单的Python函数来生成一个matplotlib图。我从一个单独的脚本中多次调用plotData
,但每次生成一个新的图。我想要的是总是只有一个类似subplot.clear()
的图来清除数据变化之间的子图。
我需要一种方法来识别外部plotData
的数字,以便我可以清除新数据的图表。什么是实现这一目标的最佳方式?
## Plot Data Function
def plotData(self):
# Setup figure to hold subplots
f = Figure(figsize=(10,8), dpi=100)
# Setup subplots
subplot1=f.add_subplot(2,1,1)
subplot2=f.add_subplot(2,1,2)
# Show plots
dataPlot = FigureCanvasTkAgg(f, master=app)
dataPlot.show()
dataPlot.get_tk_widget().pack(side=RIGHT, fill=BOTH, expand=1)
答案 0 :(得分:6)
我不确定我是否完全明白问题所在。
如果要更新绘图,则需要一个执行此操作的函数。我会称这个函数为plotData
。在此之前,您还需要设置图表。这就是您目前在plotData
中所拥有的。因此,我们将其重命名为generatePlot
。
class SomeClass():
...
def generatePlot(self):
# Setup figure to hold subplots
f = Figure(figsize=(10,8), dpi=100)
# Setup subplots
self.subplot1=f.add_subplot(2,1,1)
self.subplot2=f.add_subplot(2,1,2)
# Show plots
dataPlot = FigureCanvasTkAgg(f, master=app)
dataPlot.show()
dataPlot.get_tk_widget().pack(side=RIGHT, fill=BOTH, expand=1)
## Plot Data Function
def plotData(self, data, otherdata):
#clear subplots
self.subplot1.cla()
self.subplot2.cla()
#plot new data to the same axes
self.subplot1.plot(data)
self.subplot2.plot(otherdata)
现在您只需要在开始时拨打generatePlot
一次。之后,您可以随时使用新数据更新绘图。
答案 1 :(得分:5)
你可以使用
subplot.cla() # which clears data but not axes
subplot.clf() # which clears data and axes