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

Éric Depagne eric at depagne.org
Sun Jan 21 14:36:35 EST 2018


Le dimanche 21 janvier 2018, 04:00:47 SAST Éric Depagne a écrit :
Hi all, 

Not sure what I did wrong yesterday, but it seems that
self.ax1.set_label('AX1')
Indeed sets the label properly, and I can test that in the _on_move()

Sorry for the noise.

Éric.


> 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.
> 
> Thanks.
> 
> Éric.


-- 
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/77456fdc/attachment.html>


More information about the Matplotlib-users mailing list