matplotlib.widgets.RectangleSelector#

class matplotlib.widgets.RectangleSelector(ax, onselect=None, *, minspanx=0, minspany=0, useblit=False, props=None, spancoords='data', button=None, grab_range=10, handle_props=None, interactive=False, state_modifier_keys=None, drag_from_anywhere=False, ignore_event_outside=False, use_data_coordinates=False)[源码]#

基类: _SelectorWidget

选择 Axes 中的矩形区域。

为了使光标保持响应,您必须保留对它的引用。

在选择区域外同一坐标处触发的按下和释放事件将清除选择器,除非设置了 ignore_event_outside=True

参数:
axAxes

组件的父级 Axes 对象。

onselect函数,可选

回调函数,在释放事件发生后以及选择创建、更改或删除时被调用。它必须具有以下签名

def onselect(eclick: MouseEvent, erelease: MouseEvent)

其中 eclickerelease 分别是启动和完成选择的鼠标点击和释放 MouseEvent

minspanx浮点数,默认:0

x 跨度小于或等于 minspanx 的选择将被移除(如果已存在)或取消。

minspany浮点数,默认:0

y 跨度小于或等于 minspany 的选择将被移除(如果已存在)或取消。

useblitbool, 默认值: False

是否使用位块传输(blitting)以加快绘图速度(如果后端支持)。详细信息请参阅教程 通过位块传输实现更快的渲染

props字典,可选

绘制矩形时使用的属性。有关有效属性,请参阅 Patch。默认值为

dict(facecolor='red', edgecolor='black', alpha=0.2, fill=True)

spancoords{"data", "pixels"},默认:"data"

是否在数据坐标系或像素坐标系中解释 minspanxminspany

buttonMouseButtonMouseButton 的列表,默认:所有按钮

触发矩形选择的按钮。

grab_rangefloat, 默认值: 10

激活交互工具句柄的像素距离。

handle_propsdict, 可选

绘制交互式手柄(标记艺术家)时使用的属性。有关有效属性,请参阅 Line2D 中的标记参数。除 markeredgecolor 的默认值(将与 props 中的 edgecolor 属性相同)外,默认值均在 mpl.rcParams 中定义。

interactivebool, 默认值: False

是否绘制一组允许在绘制后与小部件进行交互的句柄。

state_modifier_keysdict, 可选

影响小部件行为的键盘修饰键。值会修改默认设置,默认设置为:

  • "move":移动现有形状,默认:无修饰键。

  • "clear": 清除当前形状,默认值: "escape"。

  • "square":将形状设为正方形,默认:"shift"。

  • "center":围绕中心更改形状,默认:"ctrl"。

  • "rotate":围绕中心在 -45° 到 45° 之间旋转形状,默认:"r"。

"square" 和 "center" 可以组合使用。正方形形状可以根据创建选择器时指定的 use_data_coordinates 参数,定义为数据坐标或显示坐标。

drag_from_anywherebool, 默认值: False

如果为 True,则可以通过在其边界内的任何位置点击来移动小部件。

ignore_event_outsidebool, 默认值: False

如果为 True,则会忽略在跨度选择器外触发的事件。

use_data_coordinates布尔值,默认:False

如果为 True,选择器的“正方形”形状定义为数据坐标而非显示坐标。

示例

>>> import matplotlib.pyplot as plt
>>> import matplotlib.widgets as mwidgets
>>> fig, ax = plt.subplots()
>>> ax.plot([1, 2, 3], [10, 50, 100])
>>> def onselect(eclick, erelease):
...     print(eclick.xdata, eclick.ydata)
...     print(erelease.xdata, erelease.ydata)
>>> props = dict(facecolor='blue', alpha=0.5)
>>> rect = mwidgets.RectangleSelector(ax, onselect, interactive=True,
...                                   props=props)
>>> fig.show()
>>> rect.add_state('square')

另请参阅:矩形和椭圆选择器

property center#

数据坐标系中的矩形中心。

property corners#

数据坐标系中的矩形角点,从左下角开始,顺时针方向。

property edge_centers#

数据坐标系中的矩形边中点,从左侧开始,逆时针方向。

property extents#

返回数据坐标系中的 (xmin, xmax, ymin, ymax),由旋转前的边界框定义。

property geometry#

返回一个形状为 (2, 5) 的数组,包含矩形四个角点的 x(RectangleSelector.geometry[1, :])和 y(RectangleSelector.geometry[0, :])数据坐标,从左上角开始并以左上角结束。

property rotation#

旋转角度(度),范围为 [-45°, 45°]。为保持实现简洁,旋转范围受限。

使用 matplotlib.widgets.RectangleSelector 的示例#

矩形和椭圆选择器

矩形和椭圆选择器