[Matplotlib-users] Subplots, axes labels and mouse events.

Éric Depagne eric at depagne.org
Sat Jan 20 21:00:47 EST 2018

Hi all, 

I have a figure which consists of three subplots, which I have defined as follows:
gs = gridspec.GridSpec(2, 2)
self.ax1 = plt.subplot(gs[0:, 0])
self.ax2 = plt.subplot(gs[1])
self.ax3 = plt.subplot(gs[3])
self.ax1.imshow(self.data, vmin=self.dataminzs, vmax=self.datamaxzs)
self.ax1.figure.canvas.mpl_connect('motion_notify_event', self._on_move)

The _on_move() callback is (currently) defined as:
def _on_move(self, event):
    if event.inaxes:
		ax = event.inaxes  # the axes instance
		print('data coords %s %f %f' % (ax, event.xdata, event.ydata))

I want that when I hover the mouse over ax1 then ax2 and ax3 show the part of ax1 which is under 
the cursor, with 2 different levels of zooms.

I want to limit the region where the _on_move() is called to ax1 and I struggle to get what I want.

I thought that calling 
self.ax1.figure.canvas.mpl_connect('motion_notify_event', self._on_move)
 would limit the area of my figure where the mouse event are caught to ax1, but it's not the case. I 
see that even.inaxes is 
picking that I'm on different part of the figure, the 

print('data coords %s %f %f' % (ax, event.xdata, event.ydata))

shows different values for ax depending on where the mouse is over the figure

So I thought that I might be checking the attributes of event.inaxes to make sure I do what I need 
to do only when the mouse is over ax1, but it seems that all the attributes of the Axes are not 
passed to the _on_move() callback. 

self.ax1.set_label('AX1') sets the ax1 label as expected, but if I test the event.inaxes.properties() in 
my _on_move(), then the label attribute is not set anymore.

Is there a way to make sure the _on_move() is fired only on a specific area of my figure? 

Any help appreciated.



Un clavier azerty en vaut deux
Éric Depagne                            

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20180121/36929e6e/attachment.html>

More information about the Matplotlib-users mailing list