moving marker line under mouse

Benjamin Root 12/07/11 4:16 AM >>>

Use draw_idle() if performance is an issue. Also, you don't have to

redraw

everything. You can save the object returned by avline()

and in subsequent draws, just modify the data. Usually, there is a

set_data()

or a set_xy() method you can use for this.

I didn't find those methods for the axvline. I thought it would have
them like
other Line2D objects.

This now works, though it sometimes creates ghost double lines, and
isn't the
most performant solution:

   def update_marker(self, event):
      print "plotMarker() pos = ", event.xdata # DEBUG
      self.marker=self.ax1
      
      #print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
      # event.button, event.x, event.y, event.xdata, event.ydata)
# DEBUG
      
      # Create markers (vertical lines) in both plots
      self.marker=self.ax1.axvline(x=event.xdata, linewidth=1.5,
color='r')
      self.marker=self.ax2.axvline(x=event.xdata, linewidth=1.5,
color='r')

      # We need to remove all unnecessary marker in plot 1 and plot 2
      # TODO: find better method, keeps double marker sometimes
      for i in range(1, len(self.ax1.lines)-1):
        self.ax1.lines[i].remove()
      for i in range(1, len(self.ax2.lines)-1):
        self.ax2.lines[i].remove()
        
      self.marker=self.ax1.axvline(x=event.xdata, linewidth=1.5,
color='r')
      self.marker=self.ax1.axvline(x=event.xdata, linewidth=1.5,
color='r')
      self.canvas.draw_idle()

Thanks for the help.

Cheers,

Sven