2017-04-24 1 views
2

MATLAB上にコードとプロットをつけた次のようなquiver3プロットがあります。中心点(シアンブルー)に近づくにつれて色が変わるようにしたいと思います中心からの距離。どのように私はそれを行うことができるアイデア?本当にありがとう!MATLAB quiver3 colormap

hold on; 
grid on; 
scatter3(frame_cur.xyz_cam(1,:),frame_cur.xyz_cam(2,:),frame_cur.xyz_cam(3,:),'MarkerFaceColor',[0 .75 .75]); 
quiver3(frameGT_cur.xyz_cam(1,:),     ... 
     frameGT_cur.xyz_cam(2,:),     ... 
     frameGT_cur.xyz_cam(3,:),     ... 
     C(1,:)-frame_cur.xyz_cam(1,:),  ... 
     C(2,:)-frame_cur.xyz_cam(2,:),  ... 
     C(3,:)-frame_cur.xyz_cam(3,:),  ... 
     0,'b','ShowArrowHead','off');* 

enter image description here

+0

を、私はこれが可能である疑い。 – thewaywewalk

+0

関連:https://stackoverflow.com/questions/29632430/quiver3-arrow-color-corresponding-to-magnitude/36940596 –

答えて

4

それはquiver3を使用していないが、結果はあなたが要求したものに近いです。この回答は、this answerに触発されています。

私は名前と値の引数を指定してsurfを使用'FaceColor','none','EdgeColor','interp'色補間してラインを作成するには:

% generate random 3D points 
n = 10; 
x = 2*rand(n,1)-1; 
y = 2*rand(n,1)-1; 
z = 2*rand(n,1)-1; 
% the color is the distance of each point 
c = sqrt(x.^2 + y.^2 + z.^2); 
% plot the points 
scatter3(x,y,z,40,c,'filled'); 
hold on 
% add zeros (the center point) between points 
xx = [zeros(1,numel(x));x(:)'];xx = xx(:); 
yy = [zeros(1,numel(y));y(:)'];yy = yy(:); 
zz = [zeros(1,numel(z));z(:)'];zz = zz(:); 
cc = [zeros(1,numel(c));c(:)'];cc = cc(:); 
% plot the lines 
h = surf([xx,xx],[yy,yy],[zz,zz],[cc,cc],... 
    'FaceColor','none','EdgeColor','interp','LineWidth',1); 
colorbar; 

enter image description here

+0

それはうまく動作します! – jiayi