![](/img/trans.png)
[英]mpl_connect key_press_event event does not fire in Scrollable Window on Python Matplotlib
[英]Understanding matplotlib event handling: what are event and mpl_connect?
我想使在散点图中按一个点时显示值成为可能。 找到解决方案的地方: 将鼠标悬停在matplotlib中的某个点上时是否可以显示标签?
解:
from matplotlib.pyplot import figure, show
import numpy as npy
from numpy.random import rand
# picking on a scatter plot (matplotlib.collections.RegularPolyCollection)
x, y, c, s = rand(4, 100)
def onpick3(event):
ind = event.ind
print 'onpick3 scatter:', ind, npy.take(x, ind), npy.take(y, ind)
fig = figure()
ax1 = fig.add_subplot(111)
col = ax1.scatter(x, y, 100*s, c, picker=True)
#fig.savefig('pscoll.eps')
fig.canvas.mpl_connect('pick_event', onpick3)
show()
它解决了我的问题。 但我不知道该怎么做,我一直在四处寻找运气。 我知道如何使用matplotlib进行绘图,所以这不是我所缺乏的知识。
我不明白的一件事是onpick3(event)
函数。 什么是事件参数? 因为该函数本身是在没有任何给定参数的情况下进一步调用的: fig.canvas.mpl_connect('pick_event', onpick)
。
mpl_connect
将信号连接到插槽。 在这种情况下,插槽为onpick3
。
请注意,未调用该插槽,即语法为
fig.canvas.mpl_connect('pick_event', onpick3)而不是
fig.canvas.mpl_connect('pick_event', onpick3() )
仅在信号触发后(鼠标在画布上单击)时才调用它。 此时,基础event
在函数调用中作为参数提供。
一旦尝试定义不带参数的插槽,您将看到。 这将导致错误,例如onpick3 expects 0 arguments but got 1
左右。
您可以在matplotlib 事件处理页面上找到详细信息。 该event
本身是matplotlib.backend_bases.PickEvent
的实例。 .ind
属性的文献记录不充分,但这主要是因为并非所有艺术家实际上都在事件中注册了该属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.