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
— 顶点的 x 坐标
向量 | 矩阵
顶点的 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
— 顶点的 y 坐标
向量 | 矩阵
顶点的 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
— 顶点的 z 坐标
向量 | 矩阵
顶点的 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
C
— 多边形的颜色
标量 | 向量 | 矩阵 | RGB 三元组 | 'r'
| 'g'
| 'b'
| ...
多边形的颜色,指定为标量、向量、矩阵或颜色名称。输入的格式确定所有多边形是具有相同的颜色、每个面一种颜色还是使用插补面颜色。
所需的效果 | 使用以下格式之一: | 结果 |
---|---|---|
所有面一种颜色 |
有关示例,请参阅 指定坐标。 |
|
每个面一种颜色 |
有关示例,请参阅 不同多边形面颜色。 |
|
对面进行插补着色 |
有关示例,请参阅 插入的多边形面颜色。 |
|
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
— 多边形顶点
两列或三列矩阵
F
— 面定义
行向量 | 矩阵
面定义,指定为下列形式之一:
行向量 - 创建一个多边形。
矩阵 - 创建多个多边形,其中每一行对应于一个多边形。
例如,以下代码在 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
S
— 补片定义
结构体
补片定义,指定为一个结构体,其中包含对应于补片属性名称的字段和对应于补片属性值的字段值。
ax
— 坐标区对象
坐标区对象
坐标区对象。如果您不指定坐标区对象,则 patch
使用当前坐标区。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: patch(x,y,c,'FaceAlpha',.5,'LineStyle',':')
创建包含点线边的半透明多边形。
此处所列的属性只是一部分补片属性。有关完整列表,请参阅 Patch 属性。
FaceColor
— 面颜色
[0 0 0]
(默认) | 'interp'
| 'flat'
| RGB 三元组 | 十六进制颜色代码 | 'r'
| 'g'
| 'b'
| ...
面颜色,指定为 '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" | 不适用 | 不适用 | 不适用 | 无颜色 |
以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
FaceAlpha
— 面透明度
1 (默认) | 范围 [0,1]
中的标量 | 'flat'
| 'interp'
面透明度,指定为下列值之一:
范围
[0,1]
中的标量 - 在所有面上使用统一的透明度。值为1
时完全不透明,值为0
时完全透明。此选项不会使用FaceVertexAlphaData
属性中的透明度值。'flat'
- 根据FaceVertexAlphaData
属性中的值,对每个面使用不同的透明度。首先,您必须将FaceVertexAlphaData
属性指定为向量,其中一个面或一个顶点对应一个透明度值。第一个顶点的透明度值确定整个面的透明度。'interp'
- 根据FaceVertexAlphaData
属性中的值,对每个面使用插值透明度。首先,您必须将FaceVertexAlphaData
属性指定为一个向量,其中一个顶点对应一个透明度值。通过基于各顶点处透明度数值进行插值,每个面上的透明度会渐变。
EdgeColor
— 边颜色
[0 0 0]
(默认) | 'none'
| 'flat'
| 'interp'
| RGB 三元组 | 十六进制颜色代码 | 'r'
| 'g'
| 'b'
| ...
边颜色,指定为下表中的值之一。默认边颜色为黑色,值为 [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" |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
LineStyle
— 线型
"-"
(默认) | "--"
| ":"
| "-."
| "none"
线型,指定为下表中列出的选项之一。
线型 | 描述 | 表示的线条 |
---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
"none" | 无线条 | 无线条 |
输出参量
p
— 补片对象
标量
补片对象,以标量形式返回。每个补片对象可以由一个或多个多边形组成。使用 p
可在创建补片对象后查询或更改其属性。
扩展功能
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
此函数在分布式数组上运行,但在客户端 MATLAB 中执行。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)