繁体   English   中英

什么事件与缩放交互式 matplotlib plot 相关联?

[英]What event is associated with zooming an interactive matplotlib plot?

据我了解,当用户与交互式matplotlib plot 交互时(即通过单击、按键等),将触发一个Event ,如果需要,可以将其链接到任意回调 function

交互式matplotlib图通常带有导航工具栏,其中包括缩放和橡皮筋选择等某些功能。 我的问题是,有没有办法从后端观察这些事情,并在用户使用导航栏/鼠标执行其中一项操作时做出反应?

我浏览了 matplotlib 文档的事件处理页面上的事件名称列表,并查看了NavigationToolbar2 class 的 API 参考,但我无法找到两者之间的任何联系。 事件甚至是要寻找的东西,还是有其他方法可以检测这些类型的交互?

自己解决了。 除了“事件处理”文档页面上显示的事件类型和fig.canvas.mpl_connect()语法之外,您还可以将回调 function 直接与Axes实例相关联,这种方式有一些不同类型的事件可以用作触发器。 Axes class 的 API 参考是这样说的:

Axes实例通过作为CallbackRegistry实例的回调属性支持回调。 您可以连接到的事件是“xlim_changed”和“ylim_changed”,回调将使用func(ax)调用,其中axAxes实例。

...然后将这些轴事件连接到现有轴实例ax上的用户定义回调func的语法可能如下所示:

def func(axes):
    print("New axis y-limits are", axes.get_ylim())

cb_registry = ax.callbacks
cid = cb_registry.connect('ylim_changed', func)

同样的方法也可以用来观察 x 轴的变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM