2017-10-09 65 views
0

我想要一个csv文件的3D图,为此我想要一个代表从中心相对移动距离的颜色图。所以我想要正面和负面的颜色都是相同的,例如:黄色为10和-10。如何在正范围和负范围内绘制具有相同颜色映射的3D数据?

另外我想标签的颜色栏的绝对值忽略的迹象。

这里是我到目前为止已经试过,

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文件中值的范围内进行。

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

回答

1

您可以编辑颜色表并重新标记颜色条

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

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

感谢您的帮助,但我不得不使用str2num而不是str2double。它现在的工作:) – MaheshKumar

0

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

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

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

+0

这不是我期待的,但我在酒吧和距离在中间想0无论是从与同色的每一面相同的值中心。 – MaheshKumar

0

制作属于您自己的色域地图!

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

cm=colormap('parula'); 

现在,让我们修改它,并将其设置

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

测试:

peaks 
colorbar 

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

+0

(SO拒绝我的图片上传,所以现在点击链接:S) –