2015-10-05 38 views
3

我是MATLAB的業餘用戶,我希望有一個顏色代表第四維的4D顏色圖。我嘗試使用scatter3如下:使用scatter3填充3D立方體的空間

fid = fopen('abc.dat','r'); 
datacell = textscan(fid, '%f%f%f%f'); 
fclose(fid); 

all_data = cell2mat(datacell); %converted into a matrix 

boxx = all_data(:,1); 
boxy = all_data(:,2); 
boxz = all_data(:,3); 
disden = all_data(:,4); %color depends on the value of disden 

scatter3(boxx,boxy,boxz,400,disden,'filled') 

xlabel('Box x') 
ylabel('Box y') 
zlabel('Box z') 
cb = colorbar;  % create the colorbar 
set(get(cb,'title'),'string','Dislocation Density(m^{-2})'); % label colobar 

雖然它的工作原理,但我想通過立方體,而不是在上述情況下的斑點被填滿了整個空間。在上述情況下,只使用斑點,所以即使它們的大小可以設置,它們仍然不能填滿空間。我所有的x,y,z值都是整數,我可以使用尺寸爲1x1x1的立方體,並使用由第四維定義的顏色,以便可以填充整個空間嗎?

另一個問題是色條的標籤與色條中顯示的數字太接近並且它們重疊。我可以設置酒吧標籤的位置,以便稍微遠一些?

非常感謝。

+1

看看['surf'](http://de.mathworks.com/help/matlab/ref/surf.html)。可能做你想做的事。請注意,它將使用['meshgrid'](http://de.mathworks.com/help/matlab/ref/meshgrid.html)創建的體積數據,因此您可能需要在使用它之前重新格式化數據。使用'pos = get(cb,'position');'和'set(cb,newpos)可以更改顏色條的位置;' – MinF

+1

我有3個關於繪製4D數據或類似立方體的問題的答案東東。看看https://stackoverflow.com/questions/29229988/visualize-a-three-dimensional-array-like-cubic-lattice-using-matlab/29233108#29233108,https://stackoverflow.com/questions/ 31828064 /構造體素-3-cube-in-matlab/31829681#31829681和https://stackoverflow.com/questions/27659632/reconstructing-three-dimensions-image-matlab/27660039#27660039 –

回答

0

如果x和y不一致,即每個網格交叉點的值都不一致,則將無法覆蓋整個體積。您需要插入輸入數據。

檢查「非均勻採樣數據的表面圖」示例here