Spe*_*r H 3 python tkinter matplotlib
我写了一个简单的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)
Run Code Online (Sandbox Code Playgroud)
我不确定我是否完全明白问题所在.如果要更新绘图,则需要一个执行此操作的函数.我会称这个功能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)
Run Code Online (Sandbox Code Playgroud)
现在你generatePlot只需要在开始时调用一次.之后,您可以随时使用新数据更新绘图.
您可以使用
subplot.cla() # which clears data but not axes
subplot.clf() # which clears data and axes
Run Code Online (Sandbox Code Playgroud)