Matlab三维绘图函数plot3用法

4.2
(6)

今天,给各位系统的介绍下 Matlab 中使用 plot3 绘图中的常见方法,主要包括三维螺旋图、多个三维线条绘制、三维矩阵绘制三维图、指定等间距刻度单位和轴标签、将点绘制为不带线的标记、自定义颜色和标记、指定线型、在绘图后修改线条、指定目标坐标区、使用自定义刻度格式绘制持续时间数据、绘制线条并在一个数据点上放置标记等常见用法。

Matlab三维绘图函数plot3用法

下面我们将开始非常详细的 Matlab plot3 函数语法介绍,实例引用,结果展示。首先,我们给出 Matlab 中关于 plot 函数的帮助文本如下:

>> help plot3
 plot3  Plot lines and points in 3-D space.
    plot3() is a three-dimensional analogue of PLOT().
  
    plot3(x,y,z), where x, y and z are three vectors of the same length,
    plots a line in 3-space through the points whose coordinates are the
    elements of x, y and z.
  
    plot3(X,Y,Z), where X, Y and Z are three matrices of the same size,
    plots several lines obtained from the columns of X, Y and Z.
  
    Various line types, plot symbols and colors may be obtained with
    plot3(X,Y,Z,s) where s is a 1, 2 or 3 character string made from
    the characters listed under the PLOT command.
  
    plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3,s3,...) combines the plots
    defined by the (x,y,z,s) fourtuples, where the x's, y's and z's are
    vectors or matrices and the s's are strings.
  
    Example: A helix:
  
        t = 0:pi/50:10*pi;
        plot3(sin(t),cos(t),t);
  
    plot3 returns a column vector of handles to lineseries objects, one
    handle per line. The X,Y,Z triples, or X,Y,Z,S quads, can be 
    followed by parameter/value pairs to specify additional 
    properties of the lines.

常见语法

plot3(X,Y,Z)
plot3(X,Y,Z,LineSpec)
plot3(X1,Y1,Z1,...,Xn,Yn,Zn)
plot3(X1,Y1,Z1,LineSpec1,...,Xn,Yn,Zn,LineSpecn)
plot3(___,Name,Value)
plot3(ax,___)
p = plot3(___)

语法说明

plot3(X,Y,Z) 绘制三维空间中的坐标。

  • 要绘制由线段连接的一组坐标,请将 X、Y、Z 指定为相同长度的向量。
  • 要在同一组坐标轴上绘制多组坐标,请将 X、Y 或 Z 中的至少一个指定为矩阵,其他指定为向量。

plot3(X,Y,Z,LineSpec) 使用指定的线型、标记和颜色创建绘图。

plot3(X1,Y1,Z1,…,Xn,Yn,Zn) 在同一组坐标轴上绘制多组坐标。使用此语法作为将多组坐标指定为矩阵的替代方法。

plot3(X1,Y1,Z1,LineSpec1,…,Xn,Yn,Zn,LineSpecn) 可为每个 XYZ 三元组指定特定的线型、标记和颜色。您可以对某些三元组指定 LineSpec,而对其他三元组省略它。例如,plot3(X1,Y1,Z1,’o’,X2,Y2,Z2) 对第一个三元组指定标记,但没有对第二个三元组指定标记。

plot3(___,Name,Value) 使用一个或多个名称-值对组参数指定 Line 属性。

plot3(ax,___) 在目标坐标区上显示绘图。将坐标区指定为上述任一语法中的第一个参数。

p = plot3(___) 返回一个 Line 对象或 Line 对象数组。创建绘图后,使用 p 修改该绘图的属性。

三维螺旋图绘制

将 t 定义为由介于 0 和 10π 之间的值组成的向量。将 st 和 ct 定义为正弦和余弦值向量。然后绘制 st、ct 和 t。

t = 0:pi/50:10*pi;
st = sin(t);
ct = cos(t);
plot3(st,ct,t)
Matlab三维绘图函数plot3用法

多个线条绘制

创建两组 xy 和 z 坐标。

t = 0:pi/500:pi;
xt1 = sin(t).*cos(10*t);
yt1 = sin(t).*sin(10*t);
zt1 = cos(t);
xt2 = sin(t).*cos(12*t);
yt2 = sin(t).*sin(12*t);
zt2 = cos(t);

调用 plot3 函数,并指定连续的 XYZ 三元组。

plot3(xt1,yt1,zt1,xt2,yt2,zt2)
Matlab三维绘图函数plot3用法

使用矩阵绘制多个线条

创建包含三行 x 坐标的矩阵 X。创建包含三行 y 坐标的矩阵 Y。

t = 0:pi/500:pi;
X(1,:) = sin(t).*cos(10*t);
X(2,:) = sin(t).*cos(12*t);
X(3,:) = sin(t).*cos(20*t);
Y(1,:) = sin(t).*sin(10*t);
Y(2,:) = sin(t).*sin(12*t);
Y(3,:) = sin(t).*sin(20*t);

创建矩阵 Z,其中包含所有三组坐标的 z 坐标。

Z = cos(t);

在同一组坐标轴上绘制所有三组坐标。

plot3(X,Y,Z)
Matlab三维绘图函数plot3用法

指定等间距刻度单位和轴标签

创建向量 xt、yt 和 zt。

t = 0:pi/500:40*pi;
xt = (3 + cos(sqrt(32)*t)).*cos(t);
yt = sin(sqrt(32) * t);
zt = (3 + cos(sqrt(32)*t)).*sin(t);

绘制数据,并使用 axis equal 命令沿每个轴等间距隔开刻度单位。然后为每个轴指定标签。

plot3(xt,yt,zt)
axis equal
xlabel('x(t)')
ylabel('y(t)')
zlabel('z(t)')
Matlab三维绘图函数plot3用法

将点绘制为不带线的标记

创建向量 t、xt 和 yt,并使用圆形标记绘制这些向量中的点。

t = 0:pi/20:10*pi;
xt = sin(t);
yt = cos(t);
plot3(xt,yt,t,'o')
Matlab三维绘图函数plot3用法

自定义颜色和标记

创建向量 t、xt 和 yt,并将这些向量中的点绘制为带 10 磅圆形标记的蓝线。使用十六进制颜色代码指定标记的填充颜色为浅蓝色。

t = 0:pi/20:10*pi;
xt = sin(t);
yt = cos(t);
plot3(xt,yt,t,'-o','Color','b','MarkerSize',10,'MarkerFaceColor','#D9FFFF')

Matalb无法使用自定义颜色值,我们需要把#D9FFFF改成black等颜色值。

Matlab三维绘图函数plot3用法

指定线型

创建向量 t。然后使用 t 计算两组 x 和 y 值。

t = 0:pi/20:10*pi;
xt1 = sin(t);
yt1 = cos(t);
xt2 = sin(2*t);
yt2 = cos(2*t);

绘制这两组值。第一组使用默认线条,第二组使用虚线。

plot3(xt1,yt1,t,xt2,yt2,t,'--')
Matlab三维绘图函数plot3用法

在绘图后修改线条

创建向量 t、xt 和 yt,并绘制这些向量中的数据。返回输出变量 p 中的图线条。

t = linspace(-10,10,1000);
xt = exp(-t./10).*sin(5*t);
yt = exp(-t./10).*cos(5*t);
p = plot3(xt,yt,t);
Matlab三维绘图函数plot3用法

将线宽更改为 3。

p.LineWidth = 3;
Matlab三维绘图函数plot3用法

指定目标坐标区

从 R2019b 开始,您可以使用 tiledlayout 和 nexttile 函数显示分块图。调用 tiledlayout 函数以创建 1×2 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。通过将坐标区对象指定为 plot3 的第一个参数,在坐标区中创建单独的线图。

tiledlayout(1,2)
% Left plot
ax1 = nexttile;
t = 0:pi/20:10*pi;
xt1 = sin(t);
yt1 = cos(t);
plot3(ax1,xt1,yt1,t)
title(ax1,'Helix With 5 Turns')
% Right plot
ax2 = nexttile;
t = 0:pi/20:10*pi;
xt2 = sin(2*t);
yt2 = cos(2*t);
plot3(ax2,xt2,yt2,t)
title(ax2,'Helix With 10 Turns')

这一部分由于我还是2016版本的Matlab无法给出图片,可以参考官方的图片,文末会给出原文地址。

不过,我可以用subplot来实现这个功能:

% Left plot
subplot(1,2,1)
t = 0:pi/20:10*pi;
xt1 = sin(t);
yt1 = cos(t);
plot3(xt1,yt1,t)
title('Helix With 5 Turns')
% Right plot
subplot(1,2,2)
t = 0:pi/20:10*pi;
xt2 = sin(2*t);
yt2 = cos(2*t);
plot3(xt2,yt2,t)
title('Helix With 10 Turns')
Matlab三维绘图函数plot3用法

使用自定义刻度格式绘制持续时间数据

创建 x 和 y 为由 0 和 1 之间的随机值组成的向量。创建 z 为由随机的持续时间值组成的向量。

x = rand(1,10);
y = rand(1,10);
z = duration(rand(10,1),randi(60,10,1),randi(60,10,1));

绘制 x、y 和 z,并将 z 轴的格式指定为分和秒。然后添加轴标签,并启用网格以使图框内的点更容易可视化。

plot3(x,y,z,'o','DurationTickFormat','mm:ss')
xlabel('X')
ylabel('Y')
zlabel('Duration')
grid on

Matlab2016中无 DurationTickFormat 这个功能

绘制线条并在一个数据点上放置标记

创建向量 xt、yt 和 zt。绘制这些值,使用 LineSpec 参数指定具有圆形标记的实线。指定 MarkerIndices 属性以在第 200 个数据点上放置一个标记。

t = 0:pi/500:pi;
xt(1,:) = sin(t).*cos(10.*t);
yt(1,:) = sin(t).*sin(10.*t);
zt = cos(t);
plot3(xt,yt,zt,'-o','MarkerIndices',200)

Matlab2016 中 Line 没有 MarkerIndices 的功能。

共计6人评分,平均4.2

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/articles/439.html

(4)
微信公众号
古哥的头像古哥管理团队
上一篇 2020年10月17日 21:55
下一篇 2020年10月18日 21:08

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号