https://ww2.mathworks.cn/help/matlab/ref/patch.html?ue
语法
patch(X,Y,C)
patch(X,Y,Z,C)
patch('XData',X,'YData',Y)
patch('XData',X,'YData',Y,'ZData',Z)
patch('Faces',F,'Vertices',V)
patch(S)
patch(___,Name,Value)
patch(ax,___)
p = 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')
指定面和顶点
通过指定每个唯一顶点的坐标和定义如何连接这些顶点的矩阵,创建一个多边形。然后,继续将两个多边形添加到图窗中。
创建一个红色正方形,四个角分别位于 (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
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
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
使用当前坐标区。
名称-值对组参数
patch(x,y,c,'FaceAlpha',.5,'LineStyle',':')
创建包含点线边的半透明多边形。此处所列的属性只是一部分补片属性。有关完整列表,请参阅 Patch 属性。
'FaceColor'
- 面颜色
[0 0 0]
(默认) | 'flat'
| 'interp'
| RGB 三元数 | 'r'
| 'g'
| 'b'
| ...
面颜色,指定为 'flat'
、'interp'
、RGB 三元数或表中列出的颜色选项之一。
'flat'
- 均匀设置面颜色。首先,将CData
或FaceVertexCData
指定为一个数组,其中一个面一个颜色,或者每个顶点对应一种颜色。如果您为每个顶点指定一种颜色,则指定的第一个顶点的颜色将确定面的颜色。'interp'
- 在每个面上插入颜色。首先,将CData
或FaceVertexCData
指定为一个数组,其中一个顶点对应一个值。通过在每个顶点上使用双线性插值确定面的颜色。
要对所有面使用同一种颜色,请指定 RGB 三元数或表中列出的颜色选项之一。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] |
'none' |
无颜色 | 不适用 |
'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'
| ...
边颜色,指定为下表中的值之一。默认边颜色是 RGB 三元数值为 [0 0 0]
的黑色。如果多个多边形共享一条边,则最先绘制的多边形将控制显示的边颜色。
值 | 说明 | 结果 |
---|---|---|
RGB 三元数或颜色名称 |
所有边使用一种颜色。如需更多详细信息,请参阅下表。 |
|
'flat' |
每条边使用不同颜色。使用顶点颜色设置该顶点之后的边的颜色。您必须先将 |
|
'interp' |
插入的边颜色。您必须先将 |
|
'none' |
不显示边。 |
不显示边。 |
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] |
'LineStyle'
- 线型
'-'
(默认) | '--'
| ':'
| '-.'
| 'none'
线型,指定为下表中列出的线型之一。
线型 | 说明 | 表示的线条 |
---|---|---|
'-' |
实线 |
|
'--' |
虚线 |
|
':' |
点线 |
|
'-.' |
点划线 |
|
'none' |
无线条 | 无线条 |
输出参数
p
- 补片对象
标量
补片对象,以标量形式返回。每个补片对象可以由一个或多个多边形组成。使用 p
可在创建补片对象后查询或更改其属性。