2012-02-23 26 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') 

を使用します。また、データを使用して各点のサイズを調整することもできます。

+0

scatter3(x,y,z,data.^-2,data,'filled') 
私が代わりに信じる 'もの(大きさ(X))' scatter3におけるサイズベクトルは、デフォルトのサイズのために同じサイズまたは空( '[]')に対するスカラー値とすることができます。 – yuk

+1

はいスカラーが存在します。私は2つのマーカーを持っているだけです。これをループの代わりに1行に追加する可能性はありますか? – Razer

+0

カラーマップを調整するだけで済みます。したがって、2つの色(赤と青)に対して、このカラーマップ([ones(50,1)* [1 0 0]; ones(50,1)* [0 0 1]])のようにします。データ範囲の中央の色分け。それを特定の数にしたい場合は、それに応じて(n-a、1)のもの(n + a、1)をスケーリングする必要があります – zamazalotta

関連する問題