2014-08-28 264 views
1

我有一個3d的粒子圖。我有500幀這些粒子的運動。 從包含位置(x,y,z)的3D矩陣接收幀。矩陣中的另一列是位移。假設它是我3D矩陣中的第7列。 如何根據這些位移值爲每個粒子分配顏色值?MATLAB caxis分配值

我知道caxis([0 1]),但它是如何知道在確定它應該是什麼顏色時要查看哪一列。我還有其他專欄。有沒有辦法分配這個?

當前代碼:

filename = 'testing.gif' 
FigHandle = figure('Position', [100, 100, 800, 700]); 
for i = 1:499 
    s = 2; 
    scatter3(ans.atom_data(:,3,i),ans.atom_data(:,4,i),ans.atom_data(:,5,i),s) 
    colorbar 
    caxis([0,1.61]) 
    T(i) = getframe 
end 
+0

你的位移的範圍是什麼? – 2014-08-28 17:20:38

+0

我們只是說0-1.5(我可以稍後編輯) – 2014-08-28 17:21:02

+0

好的。聽起來不錯。你用什麼函數來繪圖,所以我可以具體說明如何設置顏色? – 2014-08-28 17:22:35

回答

0

顏色由色彩映射服用。大多數matlab繪圖功能允許您明確設置顏色映射。對於scatter3,您將不得不傳入第5個參數,稱爲C。根據mathworks documentation on scatter3

如果C是具有長度等於X,Y的長度,和Z的向量,然後 C中的值線性映射到顏色在當前 顏色表。

這意味着,你可以通過在第7欄,無需調整caxis

filename= 'testing.gif' 
    FigHandle = figure('Position', [100, 100, 800, 700]); 
for i=1:499 

    s=2; 
    scatter3(ans.atom_data(:,3,i),ans.atom_data(:,4,i),ans.atom_data(:,5,i),s,ans.atom_data(:,7,i)) 
    colorbar 
    T(i)=getframe 
end 

如果默認的彩色地圖不理想,可以隨時通過傳遞一個創建自己的n x 3數組到colormap函數。

最後,你應該意識到這個事實,即ans變量在matlab中有特殊的含義,並會隨着你運行的每個語句而改變。您可能希望將數據存儲到具有不同名稱的變量中。

+0

謝謝!這有幫助! – 2014-08-28 19:00:05