擅长:python、mysql、java
<p>由于回调的工作方式,事件总是在顶部轴返回。您只需要一点逻辑来检查如果事件发生在我们想要的轴上:</p>
<pre><code>class Cursor(object):
def __init__(self, ax, x, y, name):
self.ax = ax
self.name = name
plt.connect('motion_notify_event', self)
def __call__(self, event):
if event.inaxes is None:
return
ax = self.ax
if ax != event.inaxes:
inv = ax.transData.inverted()
x, y = inv.transform(np.array((event.x, event.y)).reshape(1, 2)).ravel()
elif ax == event.inaxes:
x, y = event.xdata, event.ydata
else:
return
logger.debug('{n}: ({x:0.2f}, {y:0.2f})'.format(n=self.name,x=x,y=y))
</code></pre>
<p>这可能是转换堆栈中的一个细微的错误(或者这是正确的用法,幸运的是它以前曾使用过元组),但无论如何,这将使它正常工作。问题是<code>transform.py</code>中第1996行的代码期望返回一个2D<code>ndarray</code>,但是身份转换只返回交给它的元组,这就是产生错误的原因。在</p>