【问题标题】:Plotting data point in different clusters在不同的集群中绘制数据点
【发布时间】:2017-03-01 20:44:17
【问题描述】:

我的数据点和簇号如下:

X        Y       cluster
-0.42042 0.2071  0
-1.4986  -1.8658 0
-0.50905 -0.0751 0
2.1978   1.9568  1
1.4901   1.6177  1
1.6961   1.8293  1
1.6021   0.0857  1 
0.87831  0.71435 1
2.6688   1.3426  1
-1.741   0.90686 2
-1.8332  0.35599 2
-3.0733  0.42656 2
-2.1991  0.41843 2
-2.8099  0.93542 2
-1.3631  1.0914  2

上面的数据是未排序的,所以我用sortrows按照簇号排序得到了上面的数据。

我必须绘制这些集群。是否有任何用于绘制集群的 MATLAB 函数?我知道我们可以使用这样的东西:plot(M(:,1), M(:,2), '.');

但这会将所有值绘制在一个集群中。我必须根据数据绘制三个集群。簇是 0, 1,2。所以应该绘制三个具有三种不同颜色的集群。所以是这样的:

知道怎么做吗?

【问题讨论】:

    标签: matlab plot matlab-figure scatter-plot


    【解决方案1】:

    因此,您可以通过多种方式做到这一点: 您可以使用当前的颜色图作为颜色,并且简单地:

    scatter(x,y,'cdata',cluster,'marker','.');
    

    或者就像你在代码中写的那样

    scatter(M(:,1),M(:,2),'cdata',M(:,3),'marker','.');
    

    您也可以使用预定义的颜色图代替默认值

    ClusterColorMap=rand(max(M(:,3)),3); %random colormap
    colormap(ClusterColorMap);
    scatter(M(:,1),M(:,2),'cdata',M(:,3),'marker','.');
    

    此处ClusterColorMap 将有 3 行,每行包含一种特定颜色(在此处随机选择的 3 列中的 RGB 格式)。 如果您知道高级集群的数量,您可以将此矩阵设置为具有特定值。

    【讨论】:

    • 如果我考虑您的第二种方法,请解释这将如何打印三个集群,分别为 0、1,2?
    • 把我带到那里,我的代码中有错字并添加了一些解释。 bw,你可以用 plot 做类似的事情,但是对于散点数据 scatter() 应该更好
    【解决方案2】:

    您需要将数据分成三组并单独绘制。 假设您有三个变量 XYcluster,这样的事情:

    grp1 = cluster==0;
    grp2 = cluster==1;
    grp3 = cluster==2;
    

    然后分别绘制每个组:

    plot(X(grp1),Y(grp1),'.', X(grp2),Y(grp2),'.', X(grp3),Y(grp3),'.')
    

    【讨论】:

    • 感谢您的建议。我们如何将这些数据分成三组?
    • @gpuguy 如答案所示,您使用grp1grp2grp3 变量将数据分为3 组。尝试代码并检查变量,它应该变得清晰......
    【解决方案3】:

    这是一个直接的方法:

    gscatter(x,y,cluster)
    

    以下是您的数据示例:

    如果你想设置颜色、符号等...

    gscatter(x,y,cluster,'cmk','p*^')
    

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 2016-11-23
      • 2020-11-03
      • 1970-01-01
      • 2015-06-07
      • 2014-07-28
      • 2018-02-24
      • 2011-10-31
      • 1970-01-01
      相关资源
      最近更新 更多