我有一个矩阵。
Mat_=[ x y z intensity];
e.g., intensity= rand(100,1)
现在我想对强度进行着色和分类。说我想要6或10节课。我也想用colorbar来展示它。什么是最好的方法。
答案 0 :(得分:2)
您可以使用kmeans
将intensity
群集到所需数量的群集中。然后根据从聚类强度获得的指数聚类[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