如何在正负范围内绘制具有相同色图的3D数据?

时间:2017-10-09 10:05:39

标签: matlab plot

我想要一个来自csv文件的3D绘图,我希望有一个颜色图表示相对于中心移动的距离。所以我希望正值和负值的颜色相同,例如:黄色表示10和-10。

此外,我希望标签颜色条的绝对值忽略符号。

这是我到目前为止所尝试的,

A = csvread('some.csv');
x=A(:,1);
y=A(:,2);
z=A(:,3);
c = linspace(1,10,length(A(:,1)));
sz = 25;
% scatter3(x, y, z);

tri = delaunay(x, y, z);
trisurf(tri, x, y, z)


colorbar;

shading interp 
title('some title');
xlabel('x in mm');  
ylabel('y in mm');
zlabel('z in mm');

colorbar('YTickLabel',...
{'30','20','10','0',...
 '10','20','30'})

我手动分配了绝​​对值的标签,但我想知道是否可以使用csv文件中的值范围自动完成。

请帮我解决这个问题。提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以编辑色彩图并重新标记色条

curMap = colormap;
colormap([curMap(end:-1:1,:); curMap ])

colorbar_h = colorbar;
set(colorbar_h, 'yTickLabel', abs(str2double(get(colorbar_h', 'yTickLabel'))))

答案 1 :(得分:0)

trisurf允许您指定所需的颜色作为第五个参数,所以

trisurf(tri, x, y, z, abs(z))

会得到你想要的东西。无需重新标记颜色条。

答案 2 :(得分:0)

制作自己的色彩图!

您现在使用的是默认值,但您可以选择:

cm=colormap('parula');

现在让我们修改它并设置它

cm=[flipud(cm);cm];
colormap(cm);

测试:

peaks
colorbar

https://i.imgur.com/Y3uhOCm.png