How can I represent points and lines in 3 dimensions?

7 ビュー (過去 30 日間)
종수 허
종수 허 2022 年 5 月 16 日
コメント済み: 종수 허 2022 年 5 月 17 日
ox=0; oy =0; oz=0;
x1=0; y1 =0; z1=0;
x2=0; y2 =0; z2=0;
x3=2; y3 =0.6; z3=0;
x4=2; y4 =0.3; z4=0;
x5=2; y5 =0.3; z5=-0.7;
x6=2; y6 =0.3; z6=-0.7;
hold on;
x = [ox x1 x2 x3 x4 x5 x6]; % a matrix of dots
y = [oy y1 y2 y3 y4 y5 y6];
z = [oz z1 z2 z3 z4 z5 z6];
plot3(x,y,z,'ok') %plot points on a graph
plot3([ox, x1],[oy, y1],[oz, z1], 'r') %to connect dots and lines
plot3([x1, x2],[y1, y2],[z1, z2], 'g')
plot3([x2, x3],[y2, y3],[z2, z3], 'b')
plot3([x3, x4],[y3, y4],[z3, z4], 'c')
plot3([x4, x5],[y4, y5],[z4, z5], 'm')
plot3([x5, x6],[y5, y6],[z5, z6], 'y')
grid
max_L = 3;
axis([-max_L max_L -max_L max_L -max_L max_L]);
If I draw like this, it will appear in 2D instead of 3D. How can I represent it in 3D?

採用された回答

DGM
DGM 2022 年 5 月 16 日
編集済み: DGM 2022 年 5 月 16 日
Either move the hold on statement after the first call to plot3(), or issue a
view(3)
command after plotting.
Creating a pile of named variables only leads to problems. Imagine if you wanted to do this with 100 points. With the following example, the code doesn't have to be scaled with the number of points. All you need to do is generate a new colormap of the appropriate length.
% just the points
x = [0 0 0 2 2 2 2];
y = [0 0 0 0.6 0.3 0.3 0.3];
z = [0 0 0 0 0 -0.7 -0.7];
plot3(x,y,z,'ok') %plot points on a graph
hold on;
% rearrange into a series of segments
x = repelem(x,1,2);
x = reshape(x(2:end-1),2,[]).';
y = repelem(y,1,2);
y = reshape(y(2:end-1),2,[]).';
z = repelem(z,1,2);
z = reshape(z(2:end-1),2,[]).';
plot3(x,y,z) %to connect dots and lines
% apply whatever colormap you want to the series of line segments
cmap = hsv(6);
cmap = cmap([1 3 5 4 6 2],:); % to get the same order you used
set(gca,'colororder',cmap)
grid
max_L = 3;
axis([-max_L max_L -max_L max_L -max_L max_L]);
  4 件のコメント
DGM
DGM 2022 年 5 月 16 日
Consider the example:
x = 1:10
x = 1×10
1 2 3 4 5 6 7 8 9 10
x = repelem(x,1,2);
x = reshape(x(2:end-1),2,[]).'
x = 9×2
1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
Each row becomes a line object.
종수 허
종수 허 2022 年 5 月 17 日
thank you. My question has been resolved !!!!

サインインしてコメントする。

その他の回答 (1 件)

KSSV
KSSV 2022 年 5 月 16 日
It is in 3D, you need to change the view.
view(3)

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by