2017-10-09 42 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) –