pyQt Matplotlib widget live data updates

后端 未结 1 642
隐瞒了意图╮
隐瞒了意图╮ 2021-01-15 03:32

Writing in Python 2.7 using pyQt 4.8.5:

How may I update a Matplotlib widget in real time within pyQt? Currently I\'m sampling data (random.gauss for now), appending

1条回答
  •  伪装坚强ぢ
    2021-01-15 04:35

    One idea would be to update only the graphics object after the first plot was done. axes.plot should return a Line2D object whose x and y-data you can modify:

    http://matplotlib.org/api/artist_api.html#matplotlib.lines.Line2D.set_xdata

    So, once you have the line plotted, don't delete and plot a new one, but modify the existing:

    def updateData(self):
        if not hasattr(self, 'line'):
            # this should only be executed on the first call to updateData
            self.ui.graph.axes.clear()
            self.ui.graph.axes.hold(True)
            self.line = self.ui.graph.axes.plot(self.ValueTotal,'r-')
            self.ui.graph.axes.grid()
        else:
            # now we only modify the plotted line
            self.line.set_xdata(np.arange(len(self.ValueTotal))
            self.line.set_ydata(self.ValueTotal)
        self.ui.graph.draw()
    

    0 讨论(0)
提交回复
热议问题