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/36929e6e/attachment.html>