Matlab 3D绘图与节点之间的连接

时间:2014-08-22 03:45:23

标签: matlab 3d

我已经生成了图表。问题是我不知道如何在图中的点之间建立连接。

鉴于我已经拥有:

id=[1;2;3;...];
x=[x1;x2;x3;...];
y=[y1;y2;y3;...];
z=[z1;z2;z3;...];
connect_a=[id1;id2;id3;...];
connect_b=[id1';id2';id3';...];
scatter3(x,y,z,10,z);

connect_a和connect_b中的所有数字都是id号,我想在它们之间建立连接。例如,id1应连接到id1'。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我不会给出完整的通用答案,因为你没有表现出任何努力。但这里有一个例子,你可以如何做到这一般。

只需在plot3之间画一些3D线。

示例

%\\ my marker points 
A = CCD;   
x1 = A(:,1);
x2 = A(:,2);
x3 = A(:,3);

%\\ line style definition
style = {'color', 'black','LineStyle','-.','linewidth' ,1.5}

hf = figure(1);

%\\ connecting lines
plot3(x1,x2,x3,'.k', 'MarkerSize',25); hold on 
plot3([1 1 1 1 1],[-1 1 1 -1 -1],[1 1 -1 -1 1],style{:}); hold on
plot3([0 0 0 0 0],[-1 1 1 -1 -1],[1 1 -1 -1 1],style{:}); hold on
plot3([-1 1 1 -1 -1],[0 0 0 0 0],[1 1 -1 -1 1],style{:}); hold on
plot3([-1 1 1 -1 -1],[1 1 -1 -1 1],[0 0 0 0 0],style{:}); hold on
plot3([-1 -1 -1 -1 -1],[-1 1 1 -1 -1],[1 1 -1 -1 1],style{:}); hold on
plot3([1 -1],[-1 -1],[1 1],style{:}); hold on
plot3([1 -1],[-1 -1],[-1 -1],style{:}); hold on
plot3([1 -1],[1 1],[1 1],style{:}); hold on
plot3([1 -1],[1 1],[-1 -1],style{:}); hold on

%\\ some axes
plot3([-2 2],[0 0],[0,0],'color', 'black','linewidth' ,1); hold on
plot3([0 0],[-4 4],[0,0],'color', 'black','linewidth' ,1); hold on
plot3([0 0],[0 0],[-1.8 1.8],'color', 'black','linewidth' ,1); hold on
view(30,10)

%\\ some other axes limits and so on...
axis equal; grid on; hold off
set(gca,'xlim',[-1.682, 1.682],'XTick',[-1,0,1],'ylim',[-1.682, 1.682],'YTick',[-1,0,1],'zlim',[-1.682, 1.682],'ZTick',[-1,0,1]);

enter image description here

当然,您需要将所有1替换为您的ID。但我认为你可以做到这一点。

现在将所有plot3命令放在一个循环中,动态地插入它。