fill3
创建三维填充补片

说明
fill3(___,
通过使用一个或多个名称-值参量设置属性来修改 Name,Value
)Patch
对象。可以使用上述语法中的任何输入参量组合来指定补片。例如,fill3(X,Y,Z,C,'LineWidth',2)
指定一个围绕所有补片的两点边框。有关属性列表,请参阅Patch 属性。
fill3(
将在由 ax
,___)ax
指定的坐标区而不是当前坐标区 (gca
) 中绘制多边形区域。
示例
将向量 x
、y
和 z
指定为三角形顶点的 (x,y,z) 坐标。然后用指定的填充颜色(红色)绘制三角形。
x = [0 0 0];
y = [0 2 1];
z = [0 0 2];
fill3(x,y,z,'r')
将向量 x1
、y1
、z1
和 x2
、y2
、z2
定义为两个矩形的顶点的 (x,y,z) 坐标。将每个矩形的颜色指定为一个 RGB 三元组,其值指示颜色的红、绿和蓝分量的强度。在单个 fill3
调用中同时绘制两个矩形。
x1 = [0 0 1 1]; y1 = [3 3 2 2]; z1 = [0 3 2 1]; c1 = [0 0.447 0.741]; x2 = [2 2 3 3]; y2 = [1 1 0 0]; z2 = [1 2 3 0]; c2 = [0.850 0.325 0.098]; fill3(x1,y1,z1,c1,x2,y2,z2,c2)
将矩阵 x
、y
和 z
指定为三个相邻正方形的顶点坐标。将 c
指定为与 x
、y
和 z
具有相同维数的矩阵。c
中的每个值都指定对应顶点的颜色图索引。fill3
函数根据顶点颜色对每个正方形的填充颜色进行插值。
x = [0 0 0; 0 0 2; 0 2 2; 0 2 0]; y = [2 0 2; 0 0 2; 0 0 0; 2 0 0]; z = [2 0 2; 2 2 2; 0 2 2; 0 0 2]; c = [2 2 2; 3 3 0; 2 2 2; 0 0 3]; fill3(x,y,z,c)
用颜色图索引的向量 c
指定的填充颜色绘制两个三角形。将两个返回的补片存储在向量 p
中。
x = [0 1; 1.5 2.5; 3 4]; y = [4 4; 2.5 2.5; 1 1]; z = [0 0; 2 2; 0 0]; c = [1 0]; p = fill3(x,y,z,c);
使用 p
修改第一个三角形。修改 p
的第一个元素的 FaceAlpha
属性,以使第一个三角形透明。
p(1).FaceAlpha = 0.5;
输入参数
补片顶点的 x 坐标,指定为向量或矩阵。
补片数量 | 描述 | 示例 |
---|---|---|
一个补片 | 将 | 绘制一个三角形补片。 X = [0 0 4]; Y = [2 4 2]; Z = [1 1 1]; C = 1; fill3(X,Y,Z,C) |
两个或更多补片 | 将共享坐标指定为向量。将其他坐标指定为矩阵。向量的长度必须与矩阵的一个维度的长度匹配。如果矩阵为方阵,则 MATLAB® 将绘制矩阵的列对向量的图。 | 绘制两个具有共享的 x 和 z 坐标的三角形补片。 X = [0 0 4]; Y = [0 -0; 2 -2; 0 0]; Z = [0 0 0]; C = [0 1]; fill3(X,Y,Z,C) |
两个或更多补片 | 将 | 绘制两个具有唯一 x、y 和 z 坐标的三角形补片。 X = [0 5; 0 5; 4 9]; Y = [2 0; 4 2; 2 0]; Z = [0 1; 2 3; 1 2]; C = [0 1]; fill3(X,Y,Z,C) |
如果数据没有定义闭合区域,则 fill3
会使区域闭合。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
补片顶点的 y 坐标,指定为向量或矩阵。
补片数量 | 描述 | 示例 |
---|---|---|
一个补片 | 将 | 绘制一个三角形补片。 X = [0 0 4]; Y = [2 4 2]; Z = [1 1 1]; C = 1; fill3(X,Y,Z,C) |
两个或更多补片 | 将共享坐标指定为向量。将其他坐标指定为矩阵。向量的长度必须与矩阵的一个维度的长度匹配。如果矩阵为方阵,则 MATLAB 将绘制矩阵的列对向量的图。 | 绘制两个具有共享的 x 和 z 坐标的三角形补片。 X = [0 0 4]; Y = [0 -0; 2 -2; 0 0]; Z = [0 0 0]; C = [0 1]; fill3(X,Y,Z,C) |
两个或更多补片 | 指定 | 绘制两个具有唯一 x、y 和 z 坐标的三角形补片。 X = [0 5; 0 5; 4 9]; Y = [2 0; 4 2; 2 0]; Z = [0 1; 2 3; 1 2]; C = [0 1]; fill3(X,Y,Z,C) |
如果数据没有定义闭合区域,则 fill3
会使区域闭合。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
补片顶点的 z 坐标,指定为向量或矩阵。
补片数量 | 描述 | 示例 |
---|---|---|
一个补片 | 将 | 绘制一个三角形补片。 X = [0 0 4]; Y = [2 4 2]; Z = [1 1 1]; C = 1; fill3(X,Y,Z,C) |
两个或更多补片 | 将共享坐标指定为向量。将其他坐标指定为矩阵。向量的长度必须与矩阵的一个维度的长度匹配。如果矩阵为方阵,则 MATLAB 将绘制矩阵的列对向量的图。 | 绘制两个具有共享的 x 和 z 坐标的三角形补片。 X = [0 0 4]; Y = [0 -0; 2 -2; 0 0]; Z = [0 0 0]; C = [0 1]; fill3(X,Y,Z,C) |
两个或更多补片 | 指定 | 绘制两个具有唯一 x、y 和 z 坐标的三角形补片。 X = [0 5; 0 5; 4 9]; Y = [2 0; 4 2; 2 0]; Z = [0 1; 2 3; 1 2]; C = [0 1]; fill3(X,Y,Z,C) |
如果数据没有定义闭合区域,则 fill3
会使区域闭合。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
补片颜色,指定为颜色名称、RGB 三元组、颜色图索引向量或颜色图索引矩阵。
颜色名称 - 颜色名称(如
'red'
)或短名称(如'r'
)。RGB 三元组 - 三元素行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]
范围内,例如[0.4 0.6 0.7]
。RGB 三元组对于创建自定义颜色很有用。由颜色图索引组成的向量 - 数值向量,其中每个元素对应一个区域。
由颜色图索引组成的矩阵 - 与
X
、Y
和Z
具有相同维数的数值矩阵。
指定颜色的方式取决于颜色方案以及是绘制一个多边形区域还是多个区域。下表说明了最常见的情况。
颜色方案 | 指定颜色的方式 | 示例 |
---|---|---|
所有区域一种颜色 | 从下表中指定一种颜色名称或短名称,或指定一个 RGB 三元组。 | 创建矩阵 x = [0.5 0; 0.5 0; 1 1];
y = [0 2; 2 6; 1 4];
z = [0 0; 0 0; 1 2];
fill3(x,y,z,'r') |
每个区域一种颜色 | 指定一个由颜色图索引组成的 n×1 或 1×n 向量,其中 | 创建矩阵 x = [0.5 0; 0.5 0; 1 1]; y = [0 2; 2 6; 1 4]; z = [0 0; 0 0; 1 2]; c = [1 0]; fill3(x,y,z,c) |
对面进行插补着色 | 指定一个由颜色图索引组成的 m×n 矩阵,其中 | 创建矩阵 x = [0.5 0; 0.5 0; 1 1]; y = [0 2; 2 6; 1 4]; z = [0 0; 0 0; 1 2]; c = [1 1; 1 0.5; 0 0]; fill3(x,y,z,c) |
常见颜色的颜色名称和 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" |
下表列出了浅色和深色主题中绘图的默认调色板。
调色板 | 调色板颜色 |
---|---|
在 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))
获取十六进制颜色代码。
绘图所用的坐标区,指定为 Axes
或 PolarAxes
对象。如果未指定坐标区,则 fill3
在当前坐标区中绘图或创建一个 Axes
对象(笛卡尔坐标区)。
名称-值参数
以 Name1=Value1,...,NameN=ValueN
的形式指定可选参量对组,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: fill3(x,y,z,c,'FaceAlpha',.5,'LineStyle',':')
创建包含点线边的半透明多边形。
注意
此处所列的属性只是一部分补片属性。有关完整列表,请参阅 Patch 属性。
面颜色,指定为 'interp'
、'flat'
、RGB 三元组、十六进制颜色代码、颜色名称或短名称。
要为每个面创建不同颜色,请将 CData
或 FaceVertexCData
属性指定为一个数组,其中每个面对应一种颜色,或者每个顶点对应一种颜色。颜色可以基于每个面的顶点颜色通过插值来计算,也可以是统一颜色。对于插补颜色,请将此属性指定为 'interp'
。对于统一颜色,请将此属性指定为 'flat'
。如果您指定 'flat'
并为每个顶点指定不同颜色,则您指定的第一个顶点的颜色将决定面颜色。
要为所有面指定单一颜色,请将此属性指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]
范围内,例如[0.4 0.6 0.7]
。十六进制颜色代码是字符向量或字符串标量,以井号 (
#
) 开头,后跟三个或六个十六进制数字,范围可以是0
到F
。这些值不区分大小写。因此,颜色代码'#FF8800'
与'#ff8800'
、'#F80'
与'#f80'
是等效的。
颜色名称 | 短名称 | 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))
获取十六进制颜色代码。
面透明度,指定为下列值之一:
范围
[0,1]
中的标量 - 在所有面上使用统一的透明度。值为1
时完全不透明,值为0
时完全透明。此选项不会使用FaceVertexAlphaData
属性中的透明度值。'flat'
- 根据FaceVertexAlphaData
属性中的值,对每个面使用不同的透明度。首先,您必须将FaceVertexAlphaData
属性指定为向量,其中一个面或一个顶点对应一个透明度值。第一个顶点的透明度值确定整个面的透明度。'interp'
- 根据FaceVertexAlphaData
属性中的值,对每个面使用插值透明度。首先,您必须将FaceVertexAlphaData
属性指定为一个向量,其中一个顶点对应一个透明度值。通过基于各顶点处透明度数值进行插值,每个面上的透明度会渐变。
边颜色,指定为下表中的值之一。默认边颜色为黑色,值为 [0 0 0]
。如果多个多边形共用一条边,则最先绘制的多边形将控制显示的边颜色。
值 | 描述 | 结果 |
---|---|---|
RGB 三元组、十六进制颜色代码或颜色名称 | 所有边使用一种颜色。如需更多详细信息,请参阅下表。 |
|
'flat' | 每条边使用不同颜色。使用顶点颜色设置该顶点之后的边的颜色。您必须先将 |
|
'interp' | 插入的边颜色。您必须先将 |
|
'none' | 不显示边。 | 不显示边。 |
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" |
下表列出了浅色和深色主题中绘图的默认调色板。
调色板 | 调色板颜色 |
---|---|
在 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))
获取十六进制颜色代码。
线型,指定为下表中列出的选项之一。
线型 | 描述 | 表示的线条 |
---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
"none" | 无线条 | 无线条 |
输出参量
显示的多边形区域,以 Patch
对象或由 Patch
对象组成的向量形式返回。每个补片对应一个绘制区域。在绘制区域后,使用 p
查询或更改区域的属性。
替代功能
使用 patch
函数在三维坐标区上创建填充多边形。此函数提供了几个用于定义和配置填充区域的附加选项:
通过指定一组面和顶点来创建多边形。
在同一矩阵中指定多个 n 边形(n 可变)。
使用自定义 RBG 值对面颜色进行插值。
扩展功能
fill3
函数支持 GPU 数组输入,但有以下用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出通过将 PolarAxes
对象指定为第一个参量,在极坐标中创建三维填充补片。
由 fill
或 fill3
函数创建的 Patch
对象的 XData
、YData
和 ZData
属性使用原始输入数据类型返回坐标,而不是将它们作为 double
值返回。
在以前的版本中,当 datetime
、duration
和 categorical
坐标存储在 XData
、YData
和 ZData
属性中时,系统会将它们转换为 double
值。
例如,以下代码在三维坐标区上创建一个具有 datetime
x 坐标的填充多边形。然后,它使用存储在 XData
属性中的值计算 x2
。在 R2020b 中,h.XData
和 x2
是 double
数组。在 R2021a 中,h.XData
和 x2
是 datetime
数组。
x = datetime('01-Jan-2018') + days([0 1 1 0]); y = [0 0 1 1]; z = [0 0 1 1]; h = fill3(x,y,z,'red'); x2 = h.XData + 1;
要在代码中保留 double
值,请从 Patch
对象的 Vertices
属性中获取 double
值。x、y 和 z 坐标在 Vertices
数组的第一个、第二个和第三个列中存储为 double
值。
x2 = h.Vertices(:,1) + 1;
也可以使用 ruler2num
函数。将坐标值和对应的轴标尺传递给 ruler2num
函数。
ax = gca; x2 = ruler2num(h.XData,ax.XAxis) + 1;
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)