plot3
三维线图

语法
说明
向量和矩阵数据
要绘制由线段连接的一组坐标,请将
X、Y、Z指定为相同长度的向量。要在同一组坐标轴上绘制多组坐标,请将
X、Y或Z中的至少一个指定为矩阵,其他指定为向量。
表数据
示例
将 t 定义为由介于 0 和 10 之间的值组成的向量。将 st 和 ct 定义为正弦和余弦值向量。然后绘制 st、ct 和 t。
t = 0:pi/50:10*pi; st = sin(t); ct = cos(t); plot3(st,ct,t)

创建两组 x、y 和 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)

创建包含三行 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)

创建向量 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)')

创建向量 t、xt 和 yt,并使用圆形标记绘制这些向量中的点。
t = 0:pi/20:10*pi;
xt = sin(t);
yt = cos(t);
plot3(xt,yt,t,'o')
创建向量 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')

创建向量 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,'--')
创建向量 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);

将线宽更改为 3。
p.LineWidth = 3;

自 R2022a 开始
基于表数据绘图的一种便捷方法是将表传递给 plot3 函数,并指定要绘制的变量。
创建向量 x、y 和 t,并将向量放在一个表中。然后显示该表的前三行。
t = (0:pi/20:10*pi)'; x = sin(t); y = cos(t); tbl = table(x,y,t); head(tbl,3)
x y t
_______ _______ _______
0 1 0
0.15643 0.98769 0.15708
0.30902 0.95106 0.31416
绘制 x、y 和 t 表变量。以 p 形式返回 Line 对象。请注意,轴标签与变量名称匹配。
p = plot3(tbl,"x","y","t");

要修改线条的各个方面,请对 Line 对象设置 LineStyle、Color 和 Marker 属性。例如,将线条更改为具有圆形标记的红色点线。
p.LineStyle = ":"; p.Color = "red"; p.Marker = "o";

自 R2022a 开始
创建一个包含五个变量的表。然后显示该表的前三行。
t = (0:pi/500:pi)'; x1 = sin(t).*cos(10*t); x2 = sin(t).*cos(12*t); y1 = sin(t).*sin(10*t); y2 = sin(t).*sin(12*t); z = cos(t); tbl = table(x1,x2,y1,y2,z); head(tbl,3)
x1 x2 y1 y2 z
_________ _________ __________ __________ _______
0 0 0 0 1
0.0062707 0.0062653 0.00039452 0.00047329 0.99998
0.012467 0.012423 0.0015749 0.0018877 0.99992
在 x 轴上绘制 x1 和 x2 变量,在 y 轴上绘制 y1 和 y2 变量,在 z 轴上绘制 z 变量。然后,添加一个图例。请注意,图例条目与变量名称匹配。
plot3(tbl,["x1","x2"],["y1","y2"],"z") legend

您可以使用 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')

创建 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

创建向量 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)

输入参数
x 坐标,指定为标量、向量或矩阵。X 的大小和形状取决于您的数据形状和您要创建的绘图类型。下表说明了最常见的情况。
| 绘图类型 | 如何指定坐标 |
|---|---|
| 单点 | 指定 plot3(1,2,3,'o') |
| 一组点 | 指定 plot3([1 2 3],[4; 5; 6],[7 8 9]) |
| 多组点 (使用向量) | 指定多组连续的 plot3([1 2 3],[4 5 6],[7 8 9],[1 2 3],[4 5 6],[10 11 12]) |
| 多组点 (使用矩阵) | 指定 plot3([1 2 3],[4 5 6],[7 8 9; 10 11 12]) |
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration
y 坐标,指定为标量、向量或矩阵。Y 的大小和形状取决于您的数据形状和您要创建的绘图类型。下表说明了最常见的情况。
| 绘图类型 | 如何指定坐标 |
|---|---|
| 单点 | 指定 plot3(1,2,3,'o') |
| 一组点 | 指定 plot3([1 2 3],[4; 5; 6],[7 8 9]) |
| 多组点 (使用向量) | 指定多组连续的 plot3([1 2 3],[4 5 6],[7 8 9],[1 2 3],[4 5 6],[10 11 12]) |
| 多组点 (使用矩阵) | 指定 plot3([1 2 3],[4 5 6],[7 8 9; 10 11 12]) |
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration
z 坐标,指定为标量、向量或矩阵。Z 的大小和形状取决于您的数据形状和您要创建的绘图类型。下表说明了最常见的情况。
| 绘图类型 | 如何指定坐标 |
|---|---|
| 单点 | 指定 plot3(1,2,3,'o') |
| 一组点 | 指定 plot3([1 2 3],[4; 5; 6],[7 8 9]) |
| 多组点 (使用向量) | 指定多组连续的 plot3([1 2 3],[4 5 6],[7 8 9],[1 2 3],[4 5 6],[10 11 12]) |
| 多组点 (使用矩阵) | 指定 plot3([1 2 3],[4 5 6],[7 8 9; 10 11 12]) |
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration
线型、标记和颜色,指定为包含符号的字符串标量或字符向量。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、标记和颜色)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。
示例: "--or" 是带有圆形标记的红色虚线。
| 线型 | 描述 | 表示的线条 |
|---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
| 标记 | 描述 | 生成的标记 |
|---|---|---|
"o" | 圆圈 |
|
"+" | 加号 |
|
"*" | 星号 |
|
"." | 点 |
|
"x" | 叉号 |
|
"_" | 水平线条 |
|
"|" | 垂直线条 |
|
"square" | 方形 |
|
"diamond" | 菱形 |
|
"^" | 上三角 |
|
"v" | 下三角 |
|
">" | 右三角 |
|
"<" | 左三角 |
|
"pentagram" | 五角形 |
|
"hexagram" | 六角形 |
|
| 颜色名称 | 短名称 | RGB 三元组 | 外观 |
|---|---|---|---|
"red" | "r" | [1 0 0] |
|
"green" | "g" | [0 1 0] |
|
"blue" | "b" | [0 0 1] |
|
"cyan" | "c" | [0 1 1] |
|
"magenta" | "m" | [1 0 1] |
|
"yellow" | "y" | [1 1 0] |
|
"black" | "k" | [0 0 0] |
|
"white" | "w" | [1 1 1] |
|
包含要绘制的数据的源表,指定为表或时间表。
包含 x 坐标的表变量,使用下表中的索引方案之一指定。
| 索引方案 | 示例 |
|---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
您指定的表变量可以包含数值、分类、日期时间或持续时间值。如果为多个参量指定多个变量,则为每个参量指定的变量数目必须相同。
示例: plot3(tbl,["x1","x2"],"y","z") 为 x 坐标指定名为 x1 和 x2 的表变量。
示例: plot3(tbl,2,"y","z") 为 x 坐标指定第二个变量。
示例: plot3(tbl,vartype("numeric"),"y","z") 为 x 坐标指定所有数值变量。
包含 y 坐标的表变量,使用下表中的索引方案之一指定。
| 索引方案 | 示例 |
|---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
您指定的表变量可以包含数值、分类、日期时间或持续时间值。如果为多个参量指定多个变量,则为每个参量指定的变量数目必须相同。
示例: plot3(tbl,"x",["y1","y2"],"z") 为 y 坐标指定名为 y1 和 y2 的表变量。
示例: plot3(tbl,"x",2,"z") 为 y 坐标指定第二个变量。
示例: plot3(tbl,"x",vartype("numeric"),"z") 为 y 坐标指定所有数值变量。
包含 z 坐标的表变量,使用下表中的索引方案之一指定。
| 索引方案 | 示例 |
|---|---|
变量名称:
|
|
变量索引:
|
|
变量类型:
|
|
您指定的表变量可以包含数值、分类、日期时间或持续时间值。如果为多个参量指定多个变量,则为每个参量指定的变量数目必须相同。
示例: plot3(tbl,"x","y",["z1","z2"]) 为 z 坐标指定名为 z1 和 z2 的表变量。
示例: plot3(tbl,"x","y",2) 为 z 坐标指定第二个变量。
示例: plot3(tbl,"x","y",vartype("numeric")) 为 z 坐标指定所有数值变量。
目标坐标区,指定为 Axes 对象。如果不指定坐标区,且当前坐标区是笛卡尔坐标区,则 plot3 将使用当前坐标区。
名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: plot3([1 2],[3 4],[5 6],'Color','red') 为绘图指定一条红色线条。
注意
此处所列的属性只是一部分。有关完整列表,请参阅 Line 属性。
颜色,指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称。您指定的颜色会设置线条颜色。当 MarkerEdgeColor 属性设置为 'auto' 时,它还会设置标记边颜色。
对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]范围内,例如[0.4 0.6 0.7]。十六进制颜色代码是字符串标量或字符向量,以井号 (
#) 开头,后跟三个或六个十六进制数字,范围可以是0到F。这些值不区分大小写。因此,颜色代码"#FF8800"与"#ff8800"、"#F80"与"#f80"是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了一些命名颜色选项、其等效 RGB 三元组及十六进制颜色代码。
| 颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
下表列出了浅色和深色主题中绘图的默认调色板。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors 和 rgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。
线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。
线宽不能小于像素的宽度。如果将线宽设置为小于系统上像素宽度的值,则线条显示为一个像素的宽度。
标记大小,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。
标记轮廓颜色,指定为 "auto"、RGB 三元组、十六进制颜色代码、颜色名称或短名称。默认值 "auto" 使用与 Color 属性相同的颜色。
对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]范围内,例如[0.4 0.6 0.7]。十六进制颜色代码是字符串标量或字符向量,以井号 (
#) 开头,后跟三个或六个十六进制数字,范围可以是0到F。这些值不区分大小写。因此,颜色代码"#FF8800"与"#ff8800"、"#F80"与"#f80"是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了一些命名颜色选项、其等效 RGB 三元组及十六进制颜色代码。
| 颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
下表列出了浅色和深色主题中绘图的默认调色板。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors 和 rgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。
标记填充颜色,指定为 "auto"、RGB 三元组、十六进制颜色代码、颜色名称或短名称。"auto" 选项使用与父坐标区的 Color 属性相同的颜色。如果您指定 "auto",并且坐标区图框不可见,则标记填充颜色为图窗的颜色。
对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]范围内,例如[0.4 0.6 0.7]。十六进制颜色代码是字符串标量或字符向量,以井号 (
#) 开头,后跟三个或六个十六进制数字,范围可以是0到F。这些值不区分大小写。因此,颜色代码"#FF8800"与"#ff8800"、"#F80"与"#f80"是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了一些命名颜色选项、其等效 RGB 三元组及十六进制颜色代码。
| 颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
|---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
下表列出了浅色和深色主题中绘图的默认调色板。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。 |
|
|
|
您可以使用 orderedcolors 和 rgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。
提示
使用
NaN或Inf在线条中创建断点。例如,以下代码绘制一条在z=2和z=4之间具有一个断点的线条。plot3([1 2 3 4 5],[1 2 3 4 5],[1 2 NaN 4 5])
plot3基于坐标区的ColorOrder和LineStyleOrder属性选用颜色和线型。plot3先对第一种线型循环使用每种颜色。然后,再对下一个线型循环使用每种颜色,以此类推。通过在坐标区中设置
ColorOrder或LineStyleOrder属性,可以在绘图后更改颜色和线型。您也可以调用colororder函数来更改图窗中所有坐标区的色序。(自 R2019b 开始提供)
扩展功能
plot3 函数支持 GPU 数组输入,但有以下用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出当您将表和一个或多个变量名称传递给 plot3 函数时,轴和图例标签现在会显示表变量名称中包含的任何特殊字符,如下划线。以前,特殊字符会被解释为 TeX 或 LaTeX 字符。
例如,如果将包含名为 Sample_Number 的变量的表传递给 plot3 函数,则下划线会出现在轴和图例标签中。在 R2022a 及更早版本中,下划线解释为下标。
| 版本 | 表变量 "Sample_Number" 的标签 |
|---|---|
R2022b |
|
R2022a |
|
要显示具有 TeX 或 LaTeX 格式的轴和图例标签,请手动指定标签。例如,在绘制后,使用所需的标签字符串调用 xlabel 或 legend 函数。
xlabel("Sample_Number") legend(["Sample_Number" "Another_Legend_Label"])
通过将表传递给 plot3 函数并后跟要绘制的变量来创建图。当您将数据指定为表时,会自动使用表变量名称对轴标签和图例(如果有)进行标注。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)






























