清晰的数字子图matplotlib python

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)

Imp*_*est 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)
Run Code Online (Sandbox Code Playgroud)

现在你generatePlot只需要在开始时调用一次.之后,您可以随时使用新数据更新绘图.


Nic*_*k H 5

您可以使用

subplot.cla()  # which clears data but not axes
subplot.clf()  #  which clears data and axes
Run Code Online (Sandbox Code Playgroud)

  • 今天命令 subplot.clf() 被替换为 subplot.clear()。 (2认同)