我想要一个来自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文件中的值范围自动完成。
请帮我解决这个问题。提前谢谢。
答案 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