关于scatter画图分离数据问题

问题遇到的现象和发生背景

ax1.scatter(x[:,0],x[:,1],cmap="tab20c",s=2,c=y,marker='.')

其中x是一个三维数组,y是一个一维数组
出来的一张图(如下)被颜色为了三个部分
我想知道怎么分别得到各个部分的数据,谢谢

img

  • 如果你知道y里面有哪些确定的类别,比如y里面的值只有1,2,3;你可以通过x[y==1]索引y=1的类别,然后以此类推
  • 如果你不知道有哪些类别的话,你可以使用numpy的unique(y)查看y里面有哪些值

你要根据图得出结果?不太明白,如果根据图算出数据,我告诉你,不可能

题主可以看一下面的代码,是我最近画散点图的例子,也许就明白了

color = ['r', 'g', 'b']
marker = ['s', 'o', 'x']
for l, c, m in zip(np.unique(target), color, marker):
    plt.scatter(x_pca[target == l, 0],
                x_pca[target == l, 1],
                c=c, label=['off' if l == 0 else 'in'], marker=m)

x_pca对应你的X数据,target是标签,你的写法ax1.scatter(x[:,0],x[:,1],cmap="tab20c",s=2,c=y,marker='.')中,x[:,0]是数据列,x[:,1]是标签列,可以换为我的写法,指定标签为0,1,2的数据,就可以了