code: def draw_plot(self):
          
          import numpy, pylab
          state = self.state
  
          if len(self.data[0]) == 0:
              print("no data to plot")
              return
          vhigh = max(self.data[0])
          vlow  = min(self.data[0])
  
          for i in range(1,len(self.plot_data)):
              vhigh = max(vhigh, max(self.data[i]))
              vlow  = min(vlow,  min(self.data[i]))
          ymin = vlow  - 0.05*(vhigh-vlow)
          ymax = vhigh + 0.05*(vhigh-vlow)
  
          if ymin == ymax:
              ymax = ymin + 0.1
              ymin = ymin - 0.1
          self.axes.set_ybound(lower=ymin, upper=ymax)
          self.axes.grid(True, color='gray')
          pylab.setp(self.axes.get_xticklabels(), visible=True)
          pylab.setp(self.axes.get_legend().get_texts(), fontsize='small')
  
          for i in range(len(self.plot_data)):
              ydata = numpy.array(self.data[i])
              xdata = self.xdata
              if len(ydata) < len(self.xdata):
                  xdata = xdata[-len(ydata):]
              self.plot_data[i].set_xdata(xdata)
              self.plot_data[i].set_ydata(ydata)
  
          self.canvas.draw()
docs: Redraws the plot