放大 matplotlib.pyplot 图形后使用 RectangleSelector?
Use RectangleSelector after zooming in a matplotlib.pyplot figure?
我想知道是否有办法在缩放后保持 matplotlib 的 RectangleSelector 激活。为了避免我的问题和现有问题之间可能出现的混淆,请注意
我可以使用 RectangleSelector at original view persistently:
而我 select 的矩形是 :
想要实现的是先放大图像区域,然后 select 在该缩放范围内的矩形区域。
这是重现我的用例的示例代码:
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()
我发现在放大图像时阻碍我绘制另一个矩形的原因是我对缩放按钮(下图中标有蓝色的部分)的工作原理缺乏了解。例如,我在下面的情况下无法绘制矩形。
但是一旦按下缩放按钮,它就会完全禁用 RectangleSelector 小部件。但是,如果您再次单击以取消按下它,RectangleSelector 将再次激活。
我想知道是否有办法在缩放后保持 matplotlib 的 RectangleSelector 激活。为了避免我的问题和现有问题之间可能出现的混淆,请注意
我可以使用 RectangleSelector at original view persistently:
而我 select 的矩形是
想要实现的是先放大图像区域,然后 select 在该缩放范围内的矩形区域。
这是重现我的用例的示例代码:
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()
我发现在放大图像时阻碍我绘制另一个矩形的原因是我对缩放按钮(下图中标有蓝色的部分)的工作原理缺乏了解。例如,我在下面的情况下无法绘制矩形。
但是一旦按下缩放按钮,它就会完全禁用 RectangleSelector 小部件。但是,如果您再次单击以取消按下它,RectangleSelector 将再次激活。