如何以编程方式设置 SpanSelector 小部件的最小值和最大值
How to set the min and max value for SpanSelector widget programmatically
我想根据按预期工作的 SpanSelector 更新子图。但另一个要求是我需要将选定的跨度初始化为一些给定的值。我尝试调用 _press
、_release
函数,但它们只是 return False
并且没有任何反应。如何以编程方式设置跨度,以便所选跨度在 SpanSelector 中也可见?
from matplotlib.widgets import SpanSelector
from collections import namedtuple
widgets.append(
SpanSelector(range_ax, onselect=self._plot_subplots, direction='horizontal', rectprops=dict(alpha=0.5, facecolor='red'), span_stays=True)
)
# fake some events
Event = namedtuple('Event', ['xdata', 'ydata'])
widgets[0]._press(Event(0, 119))
widgets[0]._release(Event(500, 120))
设置选择矩形 stay_rect
并使用初始 xmin
和 xmax
值调用 onselect
处理程序。
示例:docs 示例的初始视图,在 plt.show()
之前插入以下内容:
xmin, xmax = 3, 4
span.stay_rect.set_bounds(xmin, 0, xmax-xmin, 1)
span.stay_rect.set_visible(True)
span.onselect(xmin, xmax)
我认为使用 extents
更干净。根据文档中的示例,您可以执行以下操作:
span = SpanSelector(
ax1,
onselect,
"horizontal",
useblit=True,
props=dict(alpha=0.5, facecolor="tab:blue"),
interactive=True,
drag_from_anywhere=True,
span_stays=True, # Add this to make SpanSelector persistent
)
# Set default values
xmin, xmax = 1, 4
span.extents = (xmin, xmax)
span.onselect(xmin, xmax)
我想根据按预期工作的 SpanSelector 更新子图。但另一个要求是我需要将选定的跨度初始化为一些给定的值。我尝试调用 _press
、_release
函数,但它们只是 return False
并且没有任何反应。如何以编程方式设置跨度,以便所选跨度在 SpanSelector 中也可见?
from matplotlib.widgets import SpanSelector
from collections import namedtuple
widgets.append(
SpanSelector(range_ax, onselect=self._plot_subplots, direction='horizontal', rectprops=dict(alpha=0.5, facecolor='red'), span_stays=True)
)
# fake some events
Event = namedtuple('Event', ['xdata', 'ydata'])
widgets[0]._press(Event(0, 119))
widgets[0]._release(Event(500, 120))
设置选择矩形 stay_rect
并使用初始 xmin
和 xmax
值调用 onselect
处理程序。
示例:docs 示例的初始视图,在 plt.show()
之前插入以下内容:
xmin, xmax = 3, 4
span.stay_rect.set_bounds(xmin, 0, xmax-xmin, 1)
span.stay_rect.set_visible(True)
span.onselect(xmin, xmax)
我认为使用 extents
更干净。根据文档中的示例,您可以执行以下操作:
span = SpanSelector(
ax1,
onselect,
"horizontal",
useblit=True,
props=dict(alpha=0.5, facecolor="tab:blue"),
interactive=True,
drag_from_anywhere=True,
span_stays=True, # Add this to make SpanSelector persistent
)
# Set default values
xmin, xmax = 1, 4
span.extents = (xmin, xmax)
span.onselect(xmin, xmax)