[Matplotlib-users] Efficiency in connecting two subplot.
Éric Depagne
eric at depagne.org
Fri Feb 16 04:36:40 EST 2018
Hi all,
I have a gridspec plot and one of the subplot is a zoom on the part over which
the mouse hovers on another subplot.
It works, but I think the way I implemented it is not very efficient, since each
time I use it, I see one CPU go to 100%.
Here is the code that does implement the zoom. Any idea on how to make it
(more) efficient or changes that I should implement welcome.
Thanks.
def plot(self):
gs = gridspec.GridSpec(6, 2)
ax1 = plt.subplot(gs[1:, 0])
plt1 = ax1.imshow(self.data, vmin=self.dataminzs, vmax=self.datamaxzs)
ax1.set_label('AX1')
self.ax2 = plt.subplot(gs[0:3, 1])
zoomeddata = self.data[np.int(self.data.shape[0]/
2)-50:np.int(self.data.shape[0]/2)+50, np.int(self.data.shape[1]/
2)-50:np.int(self.data.shape[1]/2)+50]
self.plt2 = self.ax2.imshow(zoomeddata, vmin=self.dataminzs,
vmax=self.datamaxzs)
ax1.figure.canvas.mpl_connect('motion_notify_event', self._on_move)
def _on_move(self, event):
zoom1 = 100
if event.inaxes:
ax = event.inaxes # the axes instance
if 'AX1' in ax.get_label():
# Mouse is in subplot 1.
xinf2 = np.int(event.xdata - zoom1)
xsup2 = np.int(event.xdata + zoom1)
yinf2 = np.int(event.ydata - zoom1)
ysup2 = np.int(event.ydata + zoom1)
ax2data = self.data[yinf2:ysup2, xinf2:xsup2]
self.plt2.set_data(ax2data)
self.ax2.figure.canvas.draw()
--
Un clavier azerty en vaut deux
----------------------------------------------------------
Éric Depagne
More information about the Matplotlib-users
mailing list