Python matplotlib NavigationToolbar2回调(例如,release_zoom())语法示例?

Python matplotlib NavigationToolbar2回调(例如,release_zoom())语法示例?,python,matplotlib,Python,Matplotlib,我找不到各种NavigationToolbar2回调的工作代码示例。 我已经通读了,但是我仍然在努力学习,而且没有找到显示如何正确连接到我感兴趣的事件的代码示例 为了明确起见,让我们只关注“如何将代码附加到release_zoom()?” 上述链接提供了以下文档: 释放\u平移(事件)-在平移/缩放模式下释放鼠标按钮的回调。 以下(错误的)工作示例中的相关行包括: self.nt.release_zoom('button_release_event') self.canvas.mpl_conne

我找不到各种NavigationToolbar2回调的工作代码示例。 我已经通读了,但是我仍然在努力学习,而且没有找到显示如何正确连接到我感兴趣的事件的代码示例

为了明确起见,让我们只关注“如何将代码附加到release_zoom()?”

上述链接提供了以下文档:

释放\u平移(事件)-在平移/缩放模式下释放鼠标按钮的回调。

以下(错误的)工作示例中的相关行包括:

self.nt.release_zoom('button_release_event')
self.canvas.mpl_connect('button_release_event', self.on_rel_zoom1)
self.canvas.mpl_connect('release_zoom', self.on_rel_zoom2)
我只设法连接到按钮释放事件。如何正确连接到release_zoom()


release\u pan
release\u zoom
是回调。这些是在满足用户在平移或缩放模式下释放鼠标的条件后调用的函数。您无法连接他们,但您可以连接到他们,当然,如果需要,您可以给他们打电话

中列出了可能要连接的事件。是的

由于不存在类似于
“释放缩放事件”
,因此也无法连接

但是..如果需要,您可以自己创建此
“释放缩放事件”
。对于“主页”按钮,这基本上在中进行了描述。将该示例改编为
“release\u zoom\u event”
如下所示:

import matplotlib.pyplot as plt
from matplotlib.backend_bases import NavigationToolbar2

release_zoom = NavigationToolbar2.release_zoom

def new_release_zoom(self, *args, **kwargs):
    s = 'release_zoom_event'
    self.canvas.callbacks.process(s, args[0])
    release_zoom(self, *args, **kwargs)

NavigationToolbar2.release_zoom = new_release_zoom

def handle_release_zoom(evt):
    print('release_zoom_event')
    print(evt.xdata,evt.ydata)

fig = plt.figure()
fig.canvas.mpl_connect('release_zoom_event', handle_release_zoom)
plt.plot([1,3,1])
plt.show()

同意—“连接到”:我的措辞不准确。你能提供一个简单的1行或2行的例子来说明我是如何连接到他们的吗?“连接”或“连接到”有点棘手,我甚至不能100%确定我的答案中的措辞是否正确,但在任何情况下,主要的一点是不存在“发布”事件这样的事情;但如果你愿意,你可以创造它;这当然比2行长,因为您需要对源代码进行修补。我相应地更新了答案。太好了,再次感谢!我认为这个例子的某些版本应该可以在文档中的某个地方找到……就我而言,我找不到一种方法来解决这个问题。我不确定在文档中提供猴子修补库的示例是否有意义。文档清楚地显示了现有事件。如果您想要另一个活动,您有责任以某种方式获得它。此处给出了对活动的更好描述:
events = ['resize_event', 
          'draw_event', 
          'key_press_event', 
          'key_release_event', 
          'button_press_event', 
          'button_release_event', 
          'scroll_event', 
          'motion_notify_event', 
          'pick_event', 
          'idle_event', 
          'figure_enter_event', 
          'figure_leave_event', 
          'axes_enter_event', 
          'axes_leave_event', 
          'close_event']
import matplotlib.pyplot as plt
from matplotlib.backend_bases import NavigationToolbar2

release_zoom = NavigationToolbar2.release_zoom

def new_release_zoom(self, *args, **kwargs):
    s = 'release_zoom_event'
    self.canvas.callbacks.process(s, args[0])
    release_zoom(self, *args, **kwargs)

NavigationToolbar2.release_zoom = new_release_zoom

def handle_release_zoom(evt):
    print('release_zoom_event')
    print(evt.xdata,evt.ydata)

fig = plt.figure()
fig.canvas.mpl_connect('release_zoom_event', handle_release_zoom)
plt.plot([1,3,1])
plt.show()