2012-02-23 173 views
5

我想根據值以不同顏色繪製Matlab中的3D點。我有以下代碼,但這不起作用,因爲plot3d需要一個向量。在Matlab中繪製3D點

x = vdhf_data.data(:,1); 
y = vdhf_data.data(:,2); 
z = vdhf_data.data(:,3); 
data = vdhf_data.data(:,4); 

grid on 
hold all 

for k=1:length(x) 
    if data(k) < 6 
     plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'r') 
    else 
     plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'g') 
    end 
end 

如何在Matlab中做到這一點?

回答

9

我會用

scatter3(x,y,z,ones(size(x)),data,'filled') 

這將在同一尺寸繪製所有的點,並使用當前顏色表根據數據的價值它們上色。您也可以使用數據來縮放每個點的大小。

scatter3(x,y,z,data.^-2,data,'filled') 
+0

相信代替'酮(大小(X))中'scatter3大小載體可以是用於默認大小相同的大小或空('[]')標量值。 – yuk 2012-02-23 17:43:22

+1

是的,可以有一個標量。我只想要兩個標記顏色。有沒有可能在一行而不是循環中添加它? – Razer 2012-02-23 18:07:39

+0

你只需要調整你的色彩地圖。所以對於兩種顏色(紅色和藍色),你會做這樣的'色彩映射([ones(50,1)* [1 0 0]; ones(50,1)* [0 0 1]])'這將使數據範圍中間的顏色劃分。如果你想要它在一個特定的數字,你必須相應地縮放(n-a,1)個(n + a,1) – zamazalotta 2012-02-23 18:20:26