【发布时间】:2014-10-23 00:58:48
【问题描述】:
这个问题是关于二维高斯数据的 EM 聚类(或 K-means)的可视化。比如说,我已经在散点图中显示了从 EM 获得的 3 个集群,其中 3 个集群的数据样本具有 3 种不同的颜色(比如 r、g、b)。现在我想在此之上绘制椭圆轮廓。我不希望三个计数中的每一个的颜色在从 r 到 b 的整个色谱中变化。对于集群 1 的轮廓,我想要不同强度的红色,对于集群 2,我想要不同强度的蓝色和集群 3 相同的强度。我已将同心轮廓的数量设置为 5 并尝试按如下方式传递一个颜色数组,但是它没有用。
ColorVec = ['r' ; 'g' ; 'b' ; 'm' ; 'c' ; 'y'; 'b'];
String2RBG = @(C)rem(floor((strfind('kbgcrmyw', C) - 1) * [0.25 0.5 1]), 2);
x = -3:0.1:4;
y = -3:0.1:4;
[X,Y] = meshgrid(x,y);
for k=1:numberOfClusters
Z = mvnpdf([X(:) Y(:)],estimatedMu(k,:),estimatedSigma{k});
Z = reshape(Z,length(y),length(x));
ColorVecConcentricCountours = [String2RBG(ColorVec(k));String2RBG(ColorVec(k))/1.2;String2RBG(ColorVec(k))/1.4;String2RBG(ColorVec(k))/1.6;String2RBG(ColorVec(k))/1.8];
contour(X,Y,Z,5,'color',ColorVecConcentricCountours);hold on;
end
使用 ColorVecConcentricCountours 会引发错误,但如果我给出 ColorVec(k),它会为所有 5 个轮廓给出一个 r、g 或 b 的单一阴影,这不是我想要的。
【问题讨论】:
标签: matlab cluster-analysis k-means contour scatter-plot