我知道我要问的解决方案是this one。
情况如下:
我有一个矩阵,其第一行是标识号列表。矩阵的每列(有M列)是列的标识号加上N个分量的向量。我采用这些向量中的每一个并执行聚类。一旦我在N维空间中得到了簇,我就用PCA缩小空间,得到一个2维的空间,我可以在其中绘制矢量。
有K个簇,每个都包含一些M个向量,在PCA之后是2个向量的向量。我将这些M 2-dim向量保存在与K簇相对应的组中,然后我用不同的颜色绘制每个组以区分它们。
据我所知,如果我使用数据X=[x1,...,xn]
,Y=[y1,...,yn]
绘制散点图并编写picker=true
,那么当我点击绘图中的第j个点时,将会返回索引j。当然,当我绘制K次(绘制K个簇)时,会有K个点具有索引= 0.由于以下原因,这是有问题的:
标识号可以放入列表ids = thematrix[0, :]
(第一行)。我的想法是,当我点击一个点时,我想获得一个正确地将该点与id相关联的索引。但由于很多点都有index = 0,1,...,然后我点击了很多点,我得到了相同的id。
这是我用来绘制聚类和获取索引的代码。
for i in xrange(len(useful_clusters)):
cluster = useful_clusters[i]
colour = colours[i]
ax.scatter(cluster[:, 0], cluster[:, 1], color=colour, marker='o', s=np.pi * 3 ** 2, alpha=0.95, lw=0, picker=True)
fig.canvas.mpl_connect('pick_event', onpick3)
我如何按ids
给出的顺序绘制每一个点,以便当我点击任何一点时,我正确地得到对应于该点的id?
感谢您的帮助。