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
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()