分类点并添加颜色条

时间:2013-04-16 03:01:35

标签: matlab

我有一个矩阵。

Mat_=[ x y z intensity];

e.g., intensity= rand(100,1)

现在我想对强度进行着色和分类。说我想要6或10节课。我也想用colorbar来展示它。什么是最好的方法。

2 个答案:

答案 0 :(得分:2)

您可以使用kmeansintensity群集到所需数量的群集中。然后根据从聚类强度获得的指数聚类[x y z](假设[x y z]intensity之间存在一对一的对应关系)。然后可以为每个群集分配不同的颜色然后显示。

答案 1 :(得分:2)

你可能想要这个: 请注意,我没有将数据聚合成碎片,我只是将它们绘制在颜色条中,并使用它们具有的强度值。你可能想要改变它,但我认为它很难做到;)(提示:mod可能有帮助)。

PD:好kmeans也可行

% Create data
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);                                
Z = X .* exp(-X.^2 - Y.^2);

intensity= rand(size(X));

%Get max and min
m=min(min(intensity));
M=max(max(intensity));

%set colorbar property
caxis([m M]); 
colorbar();

%get colors by intensity
colors=zeros(size(X,1),size(X,2),3);
cmap=colormap('jet'); %change for other colormaps
for i=1:size(X,1)
    for j=1:size(X,2)
        colors(i,j,:)=cmap(round(intensity(i,j)*(size(cmap,1)-1)+1),:);     
    end
end
%plot
hold on
for i=1:size(X,1)
    for j=1:size(X,2)
       plot3(X(i,j),Y(i,j),Z(i,j),'.','Color',colors(i,j,:));  
    end
end
hold off

enter image description here