3

我有 2 个图表和一个鼠标运动功能,可以打印出它们所在画布的坐标。我怎样才能使鼠标运动功能仅在鼠标悬停在其中一个图形上时才被调用。

self.ax.imshow(matrix,cmap=plt.cm.Greys_r, interpolation='none')
self.ax.imshow(matrix2,cmap=plt.cm.Greys_r, interpolation='none')

def motion_capture(event)
    print event.xdata
    print event.ydata


self.canvas = FigureCanvas(self,-1,self.fig)
self.canvas.mpl.connect('Motion', motion_capture)

目前,当鼠标沿着画布移动时调用它,如果它不在任一图形上,none则为坐标打印。我怎样才能做到这一点,所以它只被要求用于其中一张图

4

1 回答 1

1

从您的示例中不清楚,但我假设您有单独的轴/子图。(如果不是这种情况,那么你需要做更多的事情。)

在这种情况下,最简单的方法就是检测事件正在使用哪些轴event.inaxes

举个简单的例子:

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(ncols=2)

axes[0].imshow(np.random.random((10,10)), interpolation='none')
axes[1].imshow(np.random.random((10,10)), interpolation='none')

def motion_capture(event):
    if event.inaxes is axes[0]:
        print event.xdata
        print event.ydata


fig.canvas.mpl_connect('motion_notify_event', motion_capture)

plt.show()
于 2013-03-08T17:08:17.090 回答