运行Matplotlib实时动画时如何停止光标闪烁?

时间:2019-05-11 15:24:59

标签: python-3.x matplotlib

我目前正在使用Matplotlib作为绘图工具从Arduino实时绘制数据。但是,在运行代码时,我的光标一直闪烁。我认为这是由Matplotlib的序列或Animation类进行的更新引起的。如何停止光标闪烁或至少更改看起来不像光标闪烁的光标的视觉效果?

The picture does only show the loading cursor but in reality it actually switches back and forth to normal cursor.

我尝试阅读Matplotlib的Animation类,但无济于事。

Matplotlib代码

fig = plt.figure()
  ax = plt.axes(xlim=(0, 100), ylim=(0, 1023))
  a0, = ax.plot([], [])
  a1, = ax.plot([], [])
  anim = animation.FuncAnimation(fig, analogPlot.update, 
                                 fargs=(a0, a1), 
                                 interval=50)

处理串行通讯的代码

class AnalogPlot:
  # constr
  def __init__(self, strPort, maxLen):
      # open serial port
      self.ser = serial.Serial(strPort, 9600)

      self.ax = deque([0.0]*maxLen)
      self.ay = deque([0.0]*maxLen)
      self.maxLen = maxLen

  # add to buffer
  def addToBuf(self, buf, val):
      if len(buf) < self.maxLen:
          buf.append(val)
      else:
          buf.pop()
          buf.appendleft(val)

  # add data
  def add(self, data):
      assert(len(data) == 2)
      self.addToBuf(self.ax, data[0])
      self.addToBuf(self.ay, data[1])

  # update plot
  def update(self, frameNum, a0, a1):
      try:
          line = self.ser.readline()
          data = [float(val) for val in line.split()]
          # print data
          if(len(data) == 2):
              self.add(data)
              a0.set_data(range(self.maxLen), self.ax)
              a1.set_data(range(self.maxLen), self.ay)
      except KeyboardInterrupt:
          print('exiting')

      return a0, 

  # clean up
  def close(self):
      # close serial
      self.ser.flush()
      self.ser.close()

0 个答案:

没有答案