我希望能够在我的散点图中按下一个点时显示值。解决方案在此处找到:Possible to make labels appear when hovering over a point in 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)
。
答案 0 :(得分:2)
mpl_connect
将信号连接到插槽。在这种情况下,插槽onpick3
请注意,未调用该广告位,即the syntax
fig.canvas.mpl_connect('pick_event', onpick3)且不
fig.canvas.mpl_connect('pick_event', onpick3())
只有在触发信号时才会调用它(鼠标在画布上单击)。此时,底层event
作为函数调用中的参数提供。
一旦你尝试定义没有参数的插槽,你会看到。这会导致类似onpick3 expects 0 arguments but got 1
左右的错误。
您可以在matplotlib event handling页面上找到详细信息。
event
本身就是matplotlib.backend_bases.PickEvent
的一个实例。 .ind
属性没有详细记录,但主要是因为并非所有艺术家都将此属性注册到事件中。