我有一个散点图,并通过matplotlib http://matplotlib.org/users/transforms_tutorial.html#axes-coordinates实现了荧光笔类型的东西。
此刻,当您单击任何点时,荧光笔将显示在同一位置,但是我要做的是单击特定点时,它将从该点获取坐标并突出显示该点所在的位置。
我的代码是这个
def onclick
ind = event.ind
# the x coords of this transformation are data, and the
# y coord are axes
trans = transforms.blended_transform_factory(
ax.transData, ax.transAxes)
# highlight the 1..2 stddev region with a span.
# We want x to be in data coordinates and y to
# span from 0..1 in axes coords
rect = patches.Rectangle((1,0), width=1, height=1,
transform=trans, color='yellow',
alpha=0.5)
ax.add_patch(rect)
print ('on pick scatter:' , ind , np.take(x,ind), np.take(y,ind))
最佳答案
可能有一种更短的方法来执行此操作,但这是我的努力,它起作用:)
def onpick3(event):
ind = event.ind
l = np.take(x,ind)
for i in range(0,1):
d = l[i]
if highlight == 1 :
global highlight
highlight = 0;
self.canvas.draw()
if highlight == 0 :
trans = transforms.blended_transform_factory(self.axes.transData, self.axes.transAxes)
rect = patches.Rectangle(((d-10),0),width=25, height=25, transform=trans, color='yellow',alpha=0.5)
self.axes.add_patch(rect)
self.canvas.draw()
rect.remove()
else:
self.canvas.draw()
trans = transforms.blended_transform_factory(self.axes.transData, self.axes.transAxes)
rect = patches.Rectangle(((d-10),0),width=25, height=25, transform=trans, color='yellow',alpha=0.5)
self.axes.add_patch(rect)
self.canvas.draw()
highlight = 1
rect.remove()
print ('onpick3 scatter:', ind, np.take(x, ind), np.take(y, ind))
关于python - onclick方法,捕获坐标荧光笔出现matplotlib,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14673195/