Можно использовать event.artist
, чтобы определить, какому артисту в осях принадлежит данный индекс event.ind
.Тогда этого художника можно использовать, чтобы определить, что делать дальше.
import numpy as np
import matplotlib.pyplot as plt
def showScatter(data, otherdata):
def onpick(event):
ind = event.ind[0]
artist = event.artist
d = otherdata[scatters.index(artist)]
ax.set_title("You clicked {}".format(d[ind]))
fig, ax = plt.subplots()
scatters = []
for d in data:
sc = ax.scatter(d[:,0], d[:,1], picker=True)
scatters.append(sc)
for i in range(len(d)):
ax.annotate(i, (d[i,0], d[i,1]), xytext=(0,3),
textcoords="offset points", ha="center", va="baseline")
return fig.canvas.mpl_connect('pick_event', onpick)
x,y = np.meshgrid(np.arange(10), np.arange(6))
ind = np.random.randint(0,2,size=6*10).astype(bool)
data1 = np.column_stack((x.flatten()[ind], y.flatten()[ind]))
data2 = np.column_stack((x.flatten()[~ind], y.flatten()[~ind]))
cid = showScatter((data1, data2), (data1, data2))
plt.show()