patch函数的解释1

时间:2021-10-27 22:09:18

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(X,Y,C) 使用 X 和 Y 的元素作为每个顶点的坐标,以创建一个或多个填充多边形。patch 以您指定顶点的顺序连接这些顶点。要创建一个多边形,请将 X 和 Y 指定为向量。要创建多个多边形,请将 X 和 Y 指定为矩阵,其中每一列对应于一个多边形。C 决定多边形的颜色。

patch(X,Y,Z,C) 使用 XY 和 Z 在三维坐标中创建多边形。要在三维视图中查看这些多边形,请使用 view(3) 命令。C 确定多边形的颜色。

patch('XData',X,'YData',Y) 类似于 patch(X,Y,C),不同之处在于您不需要为二维坐标指定颜色数据。

patch('XData',X,'YData',Y,'ZData',Z) 类似于 patch(X,Y,Z,C),不同的是不需要为三维坐标指定颜色数据。

示例

patch('Faces',F,'Vertices',V) 创建一个或多个多边形,其中 V 指定顶点的值,F 定义要连接的顶点。当有多个多边形时,仅指定唯一顶点及其连接矩阵可以减小数据大小。为 V 中的每个行指定一个顶点。要创建一个多边形,请将 F 指定为向量。要创建多个多边形,请将 F 指定为矩阵,其中一行对应于一个多边形。不要求每个面都具有相同的顶点数。要指定不同数量的顶点,请以 NaN 值填充 F

示例

patch(S) 使用结构体 S 创建一个或多个多边形。结构体字段对应于补片属性名称,字段值对应于属性值。例如,S 可以包含字段 Faces 和 Vertices

示例

patch(___,Name,Value) 创建多边形,并使用名称-值对组参数指定一个或多个补片属性。补片是包含所有已创建多边形的数据的对象。您可以使用上述语法中的任意输入参数组合指定补片属性。例如,'LineWidth',2 将所有多边形的轮廓宽度设置为 2 磅。

patch(ax,___) 将在由 ax 指定的坐标区中,而不是当前坐标区 (gca) 中创建补片。选项 ax 可以位于前面的语法中的任何输入参数组合之前。

p = patch(___) 返回包含所有多边形的数据的补片对象。使用 p 可在创建补片对象后查询并修改其属性。有关属性和说明的列表,请参阅 Patch 属性

 

示例

全部折叠

指定坐标

尝试此示例

通过指定每个顶点的 (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')

patch函数的解释1

通过将 x 和 y 指定为两列矩阵,创建两个多边形。每一列定义其中一个多边形的坐标。patch 将这些多边形添加到当前坐标区中,而不清除坐标区。

x2 = [2 5; 2 5; 8 8];
y2 = [4 0; 8 2; 4 0];
patch(x2,y2,'green')

patch函数的解释1

 
 

指定面和顶点

尝试此示例

通过指定每个唯一顶点的坐标和定义如何连接这些顶点的矩阵,创建一个多边形。然后,继续将两个多边形添加到图窗中。

创建一个红色正方形,四个角分别位于 (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')

patch函数的解释1

通过将 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')

patch函数的解释1

 
 

不同多边形面颜色

尝试此示例

创建两个多边形,并为每个多边形面使用不同颜色。使用颜色栏以显示颜色映入颜色图的方式。

使用矩阵 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

patch函数的解释1

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

patch函数的解释1

 
 

插入的多边形面颜色

尝试此示例

通过在每个多边形顶点上指定一种颜色在不同多边形面上进行颜色插值,并使用颜色栏显示颜色映入颜色图的方式。

使用矩阵 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

patch函数的解释1

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

patch函数的解释1

 
 

多边形边,不含面

尝试此示例

创建一个具有绿色边的多边形,且不显示面。然后,创建第二个多边形,其中每个边具有不同颜色。

v = [0 0; 1 0; 1 1];
f = [1 2 3];
figure
patch('Faces',f,'Vertices',v,...
'EdgeColor','green','FaceColor','none','LineWidth',2);

patch函数的解释1

通过为每个顶点指定一种颜色并将 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);

patch函数的解释1

 
 

使用结构体的多边形

尝试此示例

使用一个结构体创建两个多边形。首先,创建一个结构体,其中的字段名称与补片属性名称相匹配。然后,使用该结构体创建多边形。

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)

patch函数的解释1

 
 

半透明的多边形

尝试此示例

通过将 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);

patch函数的解释1

 
 

创建多种颜色的线条

尝试此示例

创建一个多种颜色的线条,其中每个顶点上都有标记。插入颜色,并使用颜色栏显示值映射到颜色图的方式。

创建数据。将 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;

patch函数的解释1

 
 

输入参数

全部折叠

X - 顶点的 x 坐标
向量 | 矩阵

顶点的 x 坐标,指定为下列形式之一:

  • 向量 - 创建一个多边形。

  • 矩阵 - 创建 n 个多边形,每个多边形包含 m 个顶点,其中 [m,n] = size(X)。矩阵中的每一列对应于一个多边形。

如果数据未定义闭合的多边形,则 patch 将使多边形闭合。如果单个多边形的各条边彼此相交,则生成的多边形可能会得到部分填充。在这种情况下,最好是将补片对象划分成若干个较小的多边形。

如果您指定 Xpatch 函数会将补片对象的 XData 属性设置为相同的值。补片对象会自动计算面和顶点的数据,并将 Faces 和 Vertices 属性设置为适当的值。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Y - 顶点的 y 坐标
向量 | 矩阵

顶点的 y 坐标,指定为下列形式之一:

  • 向量 - 创建一个多边形。

  • 矩阵 - 创建 n 个多边形,每个多边形包含 m 个顶点,其中 [m,n] = size(Y)。矩阵中的每一列对应于一个多边形。

如果数据未定义闭合的多边形,则 patch 将使多边形闭合。如果单个多边形的各条边彼此相交,则生成的多边形可能会得到部分填充。在这种情况下,最好是将补片对象划分成若干个较小的多边形。

如果您指定 Ypatch 函数会将补片对象的 YData 属性设置为相同的值。补片对象会自动计算面和顶点的数据,并将 Faces 和 Vertices 属性设置为适当的值。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Z - 顶点的 z 坐标
向量 | 矩阵

顶点的 z 坐标,指定为下列形式之一:

  • 向量 - 创建一个多边形。

  • 矩阵 - 创建 m 个多边形,每个多边形包含 n 个顶点,其中 [m,n] = size(Z)。矩阵中的每一列对应于一个多边形。

如果您指定 Zpatch 函数会将补片对象的 ZData 属性设置为相同的值。补片对象会自动计算面和顶点的数据,并将 Faces 和 Vertices 属性设置为适当的值。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

C - 多边形的颜色
标量 | 向量 | 矩阵 | RGB 三元数 | 'r' | 'g' | 'b' | ...

多边形的颜色,指定为标量、向量、矩阵或颜色名称。输入的格式确定所有多边形是具有相同的颜色、每个面一种颜色还是使用插入的面颜色。

所需的效果 使用以下格式之一: 结果
所有面一种颜色
  • 颜色名称,例如,'r' 表示红色。

  • RGB 三元数,例如,[0 .5 .5]

  • 标量值,例如,2CDataMapping 属性确定值映入颜色图的方式。

有关示例,请参阅 指定坐标

patch函数的解释1

  • 将 FaceColor 属性设置为指定颜色。

每个面一种颜色
  • 颜色图颜色的 n×1 向量,其中 n 是面数。CDataMapping 属性确定值映入颜色图的方式。

  • RGB 值的 n×1×3 数组。该数组的第一页定义颜色的红色分量、第二页定义蓝色分量,第三页定义绿色分量。

有关示例,请参阅 不同多边形面颜色

patch函数的解释1

插入的面颜色
  • 颜色图值的 m×n 矩阵,其中 [m,n] = size(X)。为每个顶点指定一种颜色。

  • RGB 值的 m×n×3 数组。

有关示例,请参阅 插入的多边形面颜色

patch函数的解释1

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 - 多边形顶点
两列或三列矩阵

多边形顶点,指定为下列形式之一:

  • 两列矩阵 - 每一行包含一个顶点的 (x,y) 坐标。

  • 三列矩阵 - 每一行包含一个顶点的 (x,y,Z) 坐标。

仅指定唯一顶点。当在 F 中定义面定义时,您可以多次引用一个顶点。

如果您指定 Vpatch 函数会将补片对象的 Vertices 属性设置为相同的值。补片对象会自动计算坐标数据,并将 XDataYData 和 ZData 设置为适当的值。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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)

如果您指定 Fpatch 函数会将补片对象的 Faces 属性设置为相同的值。补片对象会自动计算坐标数据,并将 XDataYData 和 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 三元数或颜色名称

所有边使用一种颜色。如需更多详细信息,请参阅下表。

patch函数的解释1

'flat'

每条边使用不同颜色。使用顶点颜色设置该顶点之后的边的颜色。您必须先将 CData 或 FaceVertexCData 指定为一个数组,其中一个顶点对应一种颜色。边颜色取决于您指定顶点的顺序。

patch函数的解释1

'interp'

插入的边颜色。您必须先将 CData 或 FaceVertexCData 指定为一个数组,其中一个顶点对应一种颜色。通过在两个边界顶点上进行线性插值来确定边颜色。

patch函数的解释1

'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'

线型,指定为下表中列出的线型之一。

线型 说明 表示的线条
'-' 实线

patch函数的解释1

'--' 虚线

patch函数的解释1

':' 点线

patch函数的解释1

'-.' 点划线

patch函数的解释1

'none' 无线条 无线条

输出参数

全部折叠

p - 补片对象
标量

补片对象,以标量形式返回。每个补片对象可以由一个或多个多边形组成。使用 p 可在创建补片对象后查询或更改其属性。

在 R2006a 之前推出

 
此主题对您有帮助吗?