在自定义颜色映射下显示矩阵中的数值(Matlab)

6
我想根据其包含的值可视化矩阵。我有一个单元格,其中包含11个矩阵,每个矩阵都有4列,分别为x、y、z(坐标)和它们的值。我希望使用位置x、y、z来显示这个值,并基于这些值定义自己的颜色图谱,然后显示色条。我想要使用jet作为颜色图谱。我希望使用蓝色来描述颜色图谱上的最大值,红色来描述最小值。最大值和最小值之间的值会在红色和蓝色之间染上一种颜色。
这是我已经尝试过的代码:
figure;
hold on
for i=1:length(diameter_lca)
    L2 = diameter_lca{i};
    dl1 = find(L2(:,4) > minimal_lca & L2(:,4)<2);%diameter 0-2
    dl2 = find(L2(:,4) >= 2 & L2(:,4) <= maksimal_lca);%diameter>2-maksimal
    x=L2(:,1);
    y=L2(:,2);
    z=L2(:,3);
    plot3(y(dl1),x(dl1),z(dl1),'*','Color','r');
    plot3(y(dl2),x(dl2),z(dl2),'*','Color','b');
end
daspect([0.488281 0.488281 0.625000]);
view(3); axis tight
camlight

在上述代码中,我所做的是可视化每个矩阵中第4列的值,然后我设置了一个条件,即如果该值在0-2之间,则为红色,当它在2-第4列的最大值之间时,则为蓝色。

现在,我需要在不使用任何条件的情况下,在colormap jet中显示每个矩阵的第4列中的每个值。

1个回答

1
最简单的方法是使用scatter3
%# make jet colormap from red to blue
cmap = flipud(jet(128));

%# plot values
figure,
scatter3(L(:,1),L(:,2),L(:,3),[],L(:,4),'marker','*')

colormap(cmap)
colorbar

它有效了!非常感谢 :). 但我还有一个问题。如果我想将其显示为一行或使用破折号而不是星号(*)怎么办? - Nedya Utami
在这种情况下,您可能希望从Matlab文件交换中心下载并使用cline。此外,如果您觉得我的回答有帮助,请考虑点赞和/或接受它。 - Jonas
哦,对不起,我接受了你的答案并点赞了它。非常感谢你。哦,那个cline,我也试过了,但是你给我的方法(scatter3)比cline更好用。我无法在这里上传结果图像,但我更喜欢你的方法。非常感谢 :) - Nedya Utami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接