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;