I was wondering if there is a way to keep matplotlib's RectangleSelector activate after zooming. To hinder a possible confusion between my problem and existing ones, kindly note that
I am able to use the RectangleSelector at original view persistently:
And the rectangle that I select is visible after zooming:
What would like to achieve is to zoom into and image area first and then select a rectangular region within that zoom.
Here is an example code to reproduce my use case:
import matplotlib.pyplot as plt
from skimage import data as image_data
import matplotlib.widgets as mwidgets
def onselect(eclick, erelease):
"""
Handles the rectangle selection event.
:param eclick: the click event
:param erelease: the release event
"""
# only if middle button has been held down
if eclick.button != 2 or erelease.button != 2:
return
print(eclick.xdata, eclick.ydata)
print(erelease.xdata, erelease.ydata)
def update_callback(event):
"""
Handles the update event.
:param event: the update event
"""
if r_selector.active:
r_selector.update()
fig, ax = plt.subplots(figsize=(20,40))
im = ax.imshow(image_data.retina(), cmap='jet')
props = dict(facecolor='blue', alpha=0.5)
r_selector = mwidgets.RectangleSelector(ax, onselect, interactive=True)
fig.canvas.mpl_connect('draw_event', update_callback)
plt.show()