fill
创建二维填充补片
说明
fill(___,
通过使用一个或多个名称-值参量设置属性来修改补片。可以使用上述语法中的任何输入参量组合来指定补片。例如,Name,Value
)fill(X,Y,C,'LineWidth',2)
指定一个围绕所有补片的两点边框。有关属性列表,请参阅Patch 属性。
fill(
在 ax
,___)ax
指定的坐标区中绘制多边形区域,而不是在当前坐标区 (gca) 中。参量 ax
可以置于上述语法中的任何输入参量组合之前。
示例
创建填充五边形
将五边形顶点的 (x,y) 坐标定义为向量 x
和 y
。然后用指定的填充颜色(红色)绘制五边形。
x = [0 4 5 2 1];
y = [0 0 2 4 3];
fill(x,y,'r')
按顶点指定颜色
创建一个正方形的 x 和 y 坐标组成的向量。指定一个由颜色图索引组成的列向量,正方形中的每个顶点对应一个行。fill
函数使用周围的顶点对默认颜色图中其余填充颜色进行插值。
x = [0 2 2 0]; y = [0 0 2 2]; c = [1; 0.5; 0; 0.75]; fill(x,y,c)
指定多种填充颜色
将矩阵 x
和 y
定义为两个三角形的顶点的 (x,y) 坐标,其中每列对应一个三角形。将 c
指定为与 x
和 y
维数相同的矩阵。c
中的每个值指定对应顶点的颜色图索引。
x = [0 2; 0 2; 4 4]; y = [2 0; 4 1; 2 0]; c = [1 0; 1 0; 0.3 0]; fill(x,y,c)
创建半透明六边形
将六边形顶点的 (x,y) 坐标指定为向量 x
和 y
。将这些坐标绘制成一个六边形。然后在相同的坐标区上绘制此六边形的另外两个平移版本,以创建三个部分重叠的六边形。将每个六边形的 FaceAlpha
属性指定为小于 1
的值,以绘制半透明的六边形。
x = [1 3 4 3 1 0]; y = [0 0 2 4 4 2]; hold on fill(x,y,'cyan','FaceAlpha',0.3) fill(x+2,y,'magenta','FaceAlpha',0.3) fill(x+1,y+2,'yellow','FaceAlpha',0.3)
创建后修改补片
通过指定 (x,y) 坐标 x
和 y
的向量以及一个 RGB 三元组 c
,绘制一个填充八边形。将生成的补片存储为 p
。
t = (1/16:1/8:1)'*2*pi; x = cos(t); y = sin(t); c = [0.8 0.7 0.8]; p = fill(x,y,c);
使用 p
修改绘制的八边形的属性。通过将 LineWidth
属性设置为 3
来指定较粗的轮廓,并通过修改 EdgeColor
属性将轮廓的颜色更改为一个自定义 RGB 三元组。
p.LineWidth = 3; p.EdgeColor = [0.5 0.2 0.55];
输入参数
X
— 补片顶点的 x 坐标
向量 | 矩阵
补片顶点的 x 坐标,指定为向量或矩阵。
补片数量 | 描述 | 示例 |
---|---|---|
一个补片 | 指定 | 绘制一个三角形补片。 X = [0 0 4]; Y = [2 4 2]; C = 1; fill(X,Y,C) |
两个或更多补片 | 将共享坐标指定为向量。将其他坐标指定为矩阵。向量的长度必须与矩阵的一个维度的长度匹配。如果矩阵为方阵,则 MATLAB® 将绘制矩阵的列对向量的图。 | 绘制两个共享 x 坐标的三角形补片。 X = [0 0 4]; Y = [0 -0; 2 -2; 0 0]; C = [0 1]; fill(X,Y,C) |
两个或更多补片 | 将 | 用唯一 x 和 y 坐标绘制两个三角形补片。 X = [0 5; 0 5; 4 9]; Y = [2 0; 4 2; 2 0]; C = [0 1]; fill(X,Y,C) |
如果数据没有定义闭合区域,则 fill
会使区域闭合。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
Y
— 补片顶点的 y 坐标
向量 | 矩阵
补片顶点的 y 坐标,指定为向量或矩阵。
补片数量 | 描述 | 示例 |
---|---|---|
一个补片 | 指定 | 绘制一个三角形补片。 X = [0 0 4]; Y = [2 4 2]; C = 1; fill(X,Y,C) |
两个或更多补片 | 将共享坐标指定为向量。将其他坐标指定为矩阵。向量的长度必须与矩阵的一个维度的长度匹配。如果矩阵为方阵,则 MATLAB 将绘制矩阵的列对向量的图。 | 绘制两个共享 x 坐标的三角形补片。 X = [0 0 4]; Y = [0 -0; 2 -2; 0 0]; C = [0 1]; fill(X,Y,C) |
两个或更多补片 | 将 | 用唯一 x 和 y 坐标绘制两个三角形补片。 X = [0 5; 0 5; 4 9]; Y = [2 0; 4 2; 2 0]; C = [0 1]; fill(X,Y,C) |
如果数据没有定义闭合区域,则 fill
会使区域闭合。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
C
— 补片颜色
颜色名称 | RGB 三元组 | 由颜色图索引组成的向量 | 由颜色图索引组成的矩阵 | ...
补片颜色,指定为颜色名称、RGB 三元组、颜色图索引向量或颜色图索引矩阵。
颜色名称 - 颜色名称(如
'red'
)或短名称(如'r'
)。RGB 三元组 - 三元素行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]
范围内,例如[0.4 0.6 0.7]
。RGB 三元组对于创建自定义颜色很有用。由颜色图索引组成的向量 - 数值向量,其中每个元素对应一个区域。
由颜色图索引组成的矩阵 - 与
X
和Y
具有相同维数的数值矩阵。
指定颜色的方式取决于颜色方案以及是绘制一个多边形区域还是多个区域。下表说明了最常见的情况。
颜色方案 | 指定颜色的方式 | 示例 |
---|---|---|
所有区域一种颜色 | 从下表中指定一种颜色名称或短名称,或指定一个 RGB 三元组。 | 创建矩阵 x = [2 0; 2 0; 4 4];
y = [0 2; 1 4; 0 2];
fill(x,y,'r') |
每个区域一种颜色 | 指定一个由颜色图索引组成的 n×1 或 1×n 向量,其中 n 是多边形区域的数量。 | 创建矩阵 x = [2 0; 2 0; 4 4]; y = [0 2; 1 4; 0 2]; c = [1; 0]; fill(x,y,c) |
对面进行插补着色 | 指定一个由颜色图索引组成的 m×n 矩阵,其中 | 创建矩阵 x = [2 0; 2 0; 4 4]; y = [0 2; 1 4; 0 2]; c = [0.5 1; 0 1; 1 0]; fill(x,y,c) |
常见颜色的颜色名称和 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" |
ax
— 目标坐标区
Axes
对象
目标坐标区,指定为 Axes
对象。如果未指定坐标区,则 fill
函数将在当前坐标区中进行绘制;或如果不存在 Axes
对象,则创建一个对象。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: fill(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
— 显示的多边形区域
Patch
对象 | Patch
对象的向量
显示的多边形区域,以 Patch
对象或由 Patch
对象组成的向量形式返回。每个补片对应一个绘制区域。在绘制区域后,使用 p
查询或更改区域的属性。
替代功能
几个函数提供 fill
的所有功能,以及用于绘制、操作和查询多边形的附加选项。在适当情况下时,可以使用下面这些函数代替 fill
:
要创建正多边形,可使用
nsidedpoly
。此函数简化正多边形的创建,并为管理所绘制的多边形的位置和维度提供附加选项。nsidedpoly
创建一个polyshape
对象,并在创建后使用附加选项来更改polyshape
的位置、半径和边长。使用nsidedpoly
创建的polyshape
可以通过使用polyshape
的所有属性以及nsidedpoly
独有的属性进行操作。要创建不规则多边形,可使用
polyshape
。此函数提供用于定义多边形的额外选项。polyshape
创建一个polyshape
对象,该对象具有附加的属性和对象函数,用于在创建多边形后对其进行查询和修改。有关完整列表,请参阅polyshape
。要像
fill
一样创建Patch
对象,可使用patch
。此函数提供附加的选项,用于通过面和顶点数据定义二维和三维补片。
扩展功能
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 之前推出R2021a: 使用 fill
和 fill3
函数创建的 Patch
对象的 XData
、YData
和 ZData
属性返回原始数据类型的值
由 fill
或 fill3
函数创建的 Patch
对象的 XData
、YData
和 ZData
属性使用原始输入数据类型返回坐标,而不是将它们作为 double
值返回。
在以前的版本中,当 datetime
、duration
和 categorical
坐标存储在 XData
、YData
和 ZData
属性中时,系统会将它们转换为 double
值。
例如,以下代码创建一个具有 datetime
x 坐标的填充多边形区域。然后,它使用存储在 XData
属性中的值计算 x2
。在 R2020b 中,h.XData
和 x2
是 double
数组。在 R2021a 中,h.XData
和 x2
是 datetime
数组。
x = datetime('01-Jan-2018') + days([0 1 1 0]); y = [0 0 1 1]; h = fill(x,y,'red'); x2 = h.XData + 1;
要在代码中保留 double
值,请从 Patch
对象的 Vertices
属性中获取 double
值。x、y 和 z 坐标在 Vertices
数组的第一个、第二个和第三个列中存储为 double
值。
x2 = h.Vertices(:,1) + 1;
也可以使用 ruler2num
函数。将坐标值和对应的轴标尺传递给 ruler2num
函数。
ax = gca; x2 = ruler2num(h.XData,ax.XAxis) + 1;
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)