patch
创建彩色多边形的补片
语法
说明
patch(___,
创建多边形,并使用名称-值对组参量指定一个或多个补片属性。补片是包含所有已创建多边形的数据的对象。您可以使用上述语法中的任意输入参量组合指定补片属性。例如,Name,Value
)'LineWidth',2
将所有多边形的轮廓宽度设置为 2 磅。
patch(
将在由 ax
,___)ax
指定的坐标区中,而不是当前坐标区 (gca
) 中绘制补片。选项 ax
可以位于上述语法中的任何输入参量组合之前。
示例
通过指定每个顶点的 (x,y) 坐标创建一个多边形。然后,继续将两个多边形添加到图窗中。
创建一个红色正方形,顶点位于 (0,0)
、(1,0)
、(1,1)
和 (0,1)
。将 x
指定为顶点的 x 坐标,并将 y
指定为 y 坐标。patch
会自动将最后一个 (x,y) 坐标与第一个 (x,y) 坐标连接。
x = [0 1 1 0];
y = [0 0 1 1];
patch(x,y,'red')
通过将 x
和 y
指定为两列矩阵,创建两个多边形。每一列定义其中一个多边形的坐标。patch
将这些多边形添加到当前坐标区中,而不清空坐标区。
x2 = [2 5; 2 5; 8 8];
y2 = [4 0; 8 2; 4 0];
patch(x2,y2,'green')
将 X
定义为分类值向量,将 Y
定义为持续时间值向量。patch
函数使用经过排序的类别列表,因此 x 轴显示它们的顺序可能与您预期的有所不同。要指定顺序,请调用 reordercats
函数。然后,创建一个红色补片来可视化数据。
X = categorical({'Freezing','Cold','Warm','Hot','Boiling','Boiling','Freezing'}); X = reordercats(X,{'Freezing','Cold','Warm','Hot','Boiling'}); Y = minutes([0 15 20 47 50 0 0]); patch(X,Y,'red')
通过指定每个唯一顶点的坐标和定义如何连接这些顶点的矩阵,创建一个多边形。然后,继续将两个多边形添加到图窗中。
创建一个红色正方形,四个角分别位于 (0,0)
、(1,0)
、(1,1)
和 (0,1)
。指定 v
以使每行定义一个顶点的 (x,y) 坐标。然后,将 f
指定为要连接的顶点。通过指定 FaceColor
属性来设置颜色。
v = [0 0; 1 0; 1 1; 0 1]; f = [1 2 3 4]; patch('Faces',f,'Vertices',v,'FaceColor','red')
通过将 f
指定为两行矩阵来创建两个多边形。每一行定义一个补片的面。
v2 = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0]; f2 = [1 2 3; 4 5 6]; patch('Faces',f2,'Vertices',v2,'FaceColor','green')
创建两个多边形,并为每个多边形面使用不同颜色。使用颜色栏以显示颜色映射到颜色图的方式。
使用矩阵 x
和 y
创建多边形。将 c
指定为一个具有两个元素的列向量(因为有两个多边形面),并添加颜色栏。
x = [2 5; 2 5; 8 8]; y = [4 0; 8 2; 4 0]; c = [0; 1]; figure patch(x,y,c) colorbar
您也可以使用 f
和 v
得到相同的结果。当您创建多边形时,将 FaceVertexCData
设置为一个具有两个元素的列向量(因为有两个多边形面)。将 FaceColor
设置为 'flat'
。
v = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0]; f = [1 2 3; 4 5 6]; col = [0; 1]; figure patch('Faces',f,'Vertices',v,'FaceVertexCData',col,'FaceColor','flat'); colorbar
通过在每个多边形顶点上指定一种颜色在不同多边形面上进行颜色插值,并使用颜色栏显示颜色映射到颜色图的方式。
使用矩阵 x
和 y
创建多边形。将 c
指定为一个矩阵,其大小与为每个顶点定义一种颜色的 x
和 y
相同,再添加一个颜色栏。
x = [2 5; 2 5; 8 8]; y = [4 0; 8 2; 4 0]; c = [0 3; 6 4; 4 6]; figure patch(x,y,c) colorbar
您也可以使用 f
和 v
得到相同的结果。当您创建多边形时,将 FaceVertexCData
设置为一个列向量,每个顶点对应一个值,并将 FaceColor
设置为 'interp'
。
v = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0]; f = [1 2 3; 4 5 6]; col = [0; 6; 4; 3; 4; 6]; figure patch('Faces',f,'Vertices',v,'FaceVertexCData',col,'FaceColor','interp'); colorbar
创建一个具有绿色边的多边形,且不显示面。然后,创建第二个多边形,其中每个边具有不同颜色。
v = [0 0; 1 0; 1 1]; f = [1 2 3]; figure patch('Faces',f,'Vertices',v,... 'EdgeColor','green','FaceColor','none','LineWidth',2);
通过为每个顶点指定一种颜色并将 EdgeColor
设置为 'flat'
,对每条边使用不同颜色。
v = [2 0; 3 0; 3 1]; f = [1 2 3]; c = [1 0 0; % red 0 1 0; % green 0 0 1]; % blue patch('Faces',f,'Vertices',v,'FaceVertexCData',c,... 'EdgeColor','flat','FaceColor','none','LineWidth',2);
使用一个结构体创建两个多边形。首先,创建一个结构体,其中的字段名称与补片属性名称相匹配。然后,使用该结构体创建多边形。
clear S S.Vertices = [2 4; 2 8; 8 4; 5 0; 5 2; 8 0]; S.Faces = [1 2 3; 4 5 6]; S.FaceVertexCData = [0; 1]; S.FaceColor = 'flat'; S.EdgeColor = 'red'; S.LineWidth = 2; figure patch(S)
通过将 FaceAlpha
属性设置为 0
和 1
之间的值,创建两个半透明的多边形。
v1 = [2 4; 2 8; 8 4]; f1 = [1 2 3]; figure patch('Faces',f1,'Vertices',v1,'FaceColor','red','FaceAlpha',.3); v2 = [2 4; 2 8; 8 8]; f2 = [1 2 3]; patch('Faces',f2,'Vertices',v2,'FaceColor','blue','FaceAlpha',.5);
创建一个多种颜色的线条,其中每个顶点上都有标记。插入颜色,并使用颜色栏显示值映射到颜色图的方式。
创建数据。将 y
的最后一项设置为 NaN
,使 patch
创建一个线条,而非一个闭合多边形。使用 y
值为每个顶点定义一种颜色。c
中的值映射到颜色图中的颜色。
x = linspace(1,10,15); y = sin(x); y(end) = NaN; c = y;
创建线条。在每个顶点上显示标记,并将 EdgeColor
设置为 'interp'
以在顶点之间进行颜色插值。添加颜色栏。
figure patch(x,y,c,'EdgeColor','interp','Marker','o','MarkerFaceColor','flat'); colorbar;
输入参数
顶点的 x 坐标,指定为下列形式之一:
向量 - 创建一个多边形。
矩阵 - 创建
n
个多边形,每个多边形包含m
个顶点,其中[m,n] = size(X)
。矩阵中的每一列对应于一个多边形。
如果数据未定义闭合的多边形,则 patch
将使多边形闭合。如果单个多边形的各条边彼此相交,则生成的多边形可能会得到部分填充。在这种情况下,最好是将补片对象划分成若干个较小的多边形。
如果您指定 X
,patch
函数会将补片对象的 XData
属性设置为相同的值。补片对象会自动计算面和顶点的数据,并将 Faces
和 Vertices
属性设置为适当的值。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
顶点的 y 坐标,指定为下列形式之一:
向量 - 创建一个多边形。
矩阵 - 创建
n
个多边形,每个多边形包含m
个顶点,其中[m,n] = size(Y)
。矩阵中的每一列对应于一个多边形。
如果数据未定义闭合的多边形,则 patch
将使多边形闭合。如果单个多边形的各条边彼此相交,则生成的多边形可能会得到部分填充。在这种情况下,最好是将补片对象划分成若干个较小的多边形。
如果您指定 Y
,patch
函数会将补片对象的 YData
属性设置为相同的值。补片对象会自动计算面和顶点的数据,并将 Faces
和 Vertices
属性设置为适当的值。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
顶点的 z 坐标,指定为下列形式之一:
向量 - 创建一个多边形。
矩阵 - 创建
m
个多边形,每个多边形包含n
个顶点,其中[m,n] = size(Z)
。矩阵中的每一列对应于一个多边形。
如果您指定 Z
,patch
函数会将补片对象的 ZData
属性设置为相同的值。补片对象会自动计算面和顶点的数据,并将 Faces
和 Vertices
属性设置为适当的值。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
多边形的颜色,指定为标量、向量、矩阵或颜色名称。输入的格式确定所有多边形是具有相同的颜色、每个面一种颜色还是使用插补面颜色。
所需的效果 | 使用以下格式之一: | 结果 |
---|---|---|
所有面一种颜色 |
有关示例,请参阅 指定坐标。 |
|
每个面一种颜色 |
有关示例,请参阅 不同多边形面颜色。 |
|
对面进行插补着色 |
有关示例,请参阅 插入的多边形面颜色。 |
|
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1]
范围内,例如 [0.4 0.6 0.7]
。此外,还可以按名称指定一些常见的颜色。下表列出长和短颜色名称选项以及对应的 RGB 三元组值。
选项 | 描述 | 对应的 RGB 三元组 |
---|---|---|
'red' 或 'r' | 红色 | [1 0 0] |
'green' 或 'g' | 绿色 | [0 1 0] |
'blue' 或 'b' | 蓝色 | [0 0 1] |
'yellow' 或 'y' | 黄色 | [1 1 0] |
'magenta' 或 'm' | 品红色 | [1 0 1] |
'cyan' 或 'c' | 青蓝色 | [0 1 1] |
'white' 或 'w' | 白色 | [1 1 1] |
'black' 或 'k' | 黑色 | [0 0 0] |
面定义,指定为下列形式之一:
行向量 - 创建一个多边形。
矩阵 - 创建多个多边形,其中每一行对应于一个多边形。
例如,以下代码在 V
中定义三个顶点,并通过将顶点 1 连接到 2、2 连接到 3 和 3 连接到 1 来创建一个多边形。
V = [1 1; 2 1; 2 2]; F = [1 2 3 1]; patch('Faces',F,'Vertices',V)
如果您指定 F
,patch
函数会将补片对象的 Faces
属性设置为相同的值。补片对象会自动计算坐标数据,并将 XData
、YData
和 ZData
设置为适当的值。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
补片定义,指定为一个结构体,其中包含对应于补片属性名称的字段和对应于补片属性值的字段值。
绘图所用的坐标区,指定为 Axes
或 PolarAxes
对象。如果未指定坐标区,则 patch
在当前坐标区中绘图或创建一个 Axes
对象(笛卡尔坐标区)。
名称-值参数
以 Name1=Value1,...,NameN=ValueN
的形式指定可选参量对组,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: patch(x,y,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" | 无线条 | 无线条 |
输出参量
补片对象,以标量形式返回。每个补片对象可以由一个或多个多边形组成。使用 p
可在创建补片对象后查询或更改其属性。
扩展功能
patch
函数支持 GPU 数组输入,但有以下用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出通过将 PolarAxes
对象指定为 patch
函数的第一个参量,在极坐标中创建填充补片。
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)