Main Content

contourf

填充的二维等高线图

  • Filled contour plot

说明

示例

contourf(Z) 创建一个包含矩阵 Z 的等值线的填充等高线图,其中 Z 包含 x-y 平面上的高度值。MATLAB® 会自动选择要显示的等高线。Z 的列和行索引分别是平面中的 x 和 y 坐标。

contourf(X,Y,Z) 指定 Z 中各值的 x 和 y 坐标。

示例

contourf(___,levels) 将要显示的等高线指定为上述任一语法中的最后一个参数。将 levels 指定为标量值 n,以在 n 个自动选择的层级(高度)上显示等高线。要在某些特定高度绘制等高线,请将 levels 指定为单调递增值的向量。要在一个高度 (k) 绘制等高线,请将 levels 指定为二元素行向量 [k k]

示例

contourf(___,LineSpec) 指定等高线的线型和颜色。

示例

contourf(___,Name,Value) 使用一个或多个名称-值对组参数指定等高线图的其他选项。请在所有其他输入参数之后指定这些选项。有关属性列表,请参阅 Contour 属性

contourf(ax,___) 在目标坐标区中显示等高线图。将坐标区指定为上述任一语法中的第一个参数。

M = contourf(___) 返回等高线矩阵 M,其中包含每个层级的顶点的 (x, y) 坐标。

示例

[M,c] = contourf(___) 返回等高线矩阵和等高线对象 c。显示等高线图后,使用 c 设置属性。

示例

全部折叠

Z 定义为两个变量的函数。在本例中,调用 peaks 函数以创建 Z。然后显示 Z 的填充等高线图,让 MATLAB® 选择等高线层级。

Z = peaks;
contourf(Z)

Figure contains an axes object. The axes object contains an object of type contour.

Z 定义为两个变量 XY 的函数。然后在 Z 的 10 个层级上显示等高线。

x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X) + cos(Y);
contourf(X,Y,Z,10)

Figure contains an axes object. The axes object contains an object of type contour.

Z 定义为 XY 的函数。在本例中,调用 peaks 函数以创建 XYZ。然后显示层级 23 上的等高线。

白色区域对应于小于 2 的高度。紫色区域对应于 23 之间的高度。黄色区域对应于大于 3 的高度。

[X,Y,Z] = peaks(50);
contourf(X,Y,Z,[2 3],'ShowText','on')

Figure contains an axes object. The axes object contains an object of type contour.

自 R2022b 开始提供

创建一个显示标签的等高线图,标签表示为小数点后带一位数字并后跟字母 m。通过将 FaceAlpha 属性设置为 0.25 来指定部分透明的填充颜色。

contourf(peaks,[-4 0 2],"ShowText",true,"LabelFormat","%0.1f m", ...
    "FaceAlpha",0.25)

Figure contains an axes object. The axes object contains an object of type contour.

自 R2022b 开始提供

当需要计算值时,可以指定函数来格式化标签。例如,您可以定义一个函数来计算不同单位的标签值。

在名为 mylabelfun.m 的程序文件中定义此函数。该函数将输入从米转换为英尺,并返回一个字符串向量,其中包含以米为单位的每个值,并用括号括起相应的以英尺为单位的值。

function labels = mylabelfun(vals)
feetPerMeter = 3.28084;
feet = round(vals.*feetPerMeter);
labels = vals + " m (" + feet + " ft)";
labels(vals == 0) = "0 m";
end

接下来,创建一个等高线图,并将 LabelFormat 属性指定为 mylabelfun 的句柄。通过将 FaceAlpha 值设置为 0.25,指定部分透明的填充颜色。

contourf(peaks,[-4 0 2],"ShowText",true,"LabelFormat",@mylabelfun, ...
    "FaceAlpha",0.25)

Z 定义为 XY 的函数。在本例中,调用 peaks 函数以创建 XYZ。然后在 Z = 2 处显示等高线。

[X,Y,Z] = peaks;
contourf(X,Y,Z,[2 2])

Figure contains an axes object. The axes object contains an object of type contour.

创建等高线图,并指定虚线线型。

[X,Y,Z] = peaks;
contourf(X,Y,Z,'--')

Figure contains an axes object. The axes object contains an object of type contour.

创建填充等高线图。通过将 LineWidth 属性设置为 3,使等高线更粗。

Z = peaks;
[M,c] = contourf(Z);
c.LineWidth = 3;

Figure contains an axes object. The axes object contains an object of type contour.

在曲面上任何不连续的位置插入 NaN 值。contourf 函数不会在这些区域中绘制等高线。

将矩阵 Z 定义为 peaks 函数的采样。将列 26 中的所有值替换为 NaN 值。然后绘制修改后的 Z 矩阵的等高线。

Z = peaks;
Z(:,26) = NaN;
contourf(Z)

Figure contains an axes object. The axes object contains an object of type contour.

输入参数

全部折叠

x 坐标,指定为大小与 Z 相同的矩阵或长度为 n 的向量,其中 [m,n] = size(Z)X 的默认值是向量 (1:n)

X 是矩阵时,这些值必须在一个维度上严格递增或递减,而在另一个维度上保持不变。这个变化的维度必须与在 Y 中变化的维度相反。您可以使用 meshgrid 函数创建 XY 矩阵。

X 是向量时,值必须严格递增或递减。

示例: X = 1:10

示例: X = [1 2 3; 1 2 3; 1 2 3]

示例: [X,Y] = meshgrid(1:10)

Contour 对象的 XData 属性存储 x 坐标。

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

y 坐标,指定为大小与 Z 相同的矩阵或长度为 m 的向量,其中 [m,n] = size(Z)Y 的默认值是向量 (1:m)

Y 是矩阵时,这些值必须在一个维度上严格递增或递减,而在另一个维度上保持不变。这个变化的维度必须与在 X 中变化的维度相反。您可以使用 meshgrid 函数创建 XY 矩阵。

Y 是向量时,值必须严格递增或递减。

示例: Y = 1:10

示例: Y = [1 1 1; 2 2 2; 3 3 3]

示例: [X,Y] = meshgrid(1:10)

Contour 对象的 YData 属性存储 y 坐标。

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

z 坐标,指定为矩阵。此矩阵必须至少包含两行两列,并且必须至少包含两个不同值。

示例: Z = peaks(20)

Contour 对象的 ZData 属性存储 z 坐标。

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

等高线层级,指定为整数标量或向量。使用此参数可控制等高线的数量和位置。如果未指定层级,contourf 函数会自动选择层级。

  • 要在 n 个自动选择的高度处绘制等高线,请将 levels 指定为标量值 n。

  • 要在某些特定高度绘制等高线,请将 levels 指定为单调递增值的向量。

  • 要在单个高度 k 处绘制等高线,请将 levels 指定为二元素行向量 [k k]

contourf 函数使用当前颜色图来填充绘图中各层级之间的空间。第一种颜色填充最低层级与其上一层级之间的空间。最后一种颜色对应于大于绘图中最高层级的 Z 值。如果 Z 包含的值小于绘图中显示的最低层级,则最低层级和最小 Z 值之间的区域为白色。

示例: contourf(peaks,10)peaks 函数上 10 个自动选择的高度处绘制等高线。

示例: contourf(peaks,[-4 0 4])peaks 函数上的 3 个特定高度处绘制等高线:-404

示例: contourf(peaks,[3 3]) 绘制等高线以显示 peaks 函数的高度为 3 的位置。

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

线型和颜色,指定为包含字符和符号的字符向量或字符串标量。字符和符号可以按任何顺序出现。您可以指定线型和/或线条颜色。忽略 'o' 等标记符号。

示例: '--g' 表示绿色虚线。

线型描述表示的线条
"-"实线

Sample of solid line

"--"虚线

Sample of dashed line

":"点线

Sample of dotted line

"-."点划线

Sample of dash-dotted line, with alternating dashes and dots

颜色名称短名称外观
'red''r'

Sample of the color red

'green''g'

Sample of the color green

'blue''b'

Sample of the color blue

'cyan' 'c'

Sample of the color cyan

'magenta''m'

Sample of the color magenta

'yellow''y'

Sample of the color yellow

'black''k'

Sample of the color black

'white''w'

Sample of the color white

目标坐标区,指定为 Axes 对象。如果未指定坐标区,则 contourf 在当前坐标区中绘图。

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: contourf(Z,'ShowText','on') 显示等高线标签。

注意

此处所列的属性只是一部分。有关完整列表,请参阅 Contour 属性

等高线标签,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 沿等高线显示高度值。

  • 'off' - 不为等高线添加标签。

等高线宽度,指定为以磅为单位的正值。一磅等于 1/72 英寸。

沿等高线的标签间距,指定为以磅为单位的标量值,其中一磅等于 1/72 英寸。使用此属性可控制沿等高线的等高线标签的数量。值越小,标签越多。

必须将 ShowText 属性设置为 'on' 才能使 LabelSpacing 属性生效。

如果使用 clabel 函数显示标签,则 LabelSpacing 属性不起作用,并且绘图对每行显示一个标签。

输出参数

全部折叠

等高线矩阵,以下面形式的两行矩阵形式返回。

Z1, x1,1, x1,2, ..., x1,N1, Z2, x2,1, x2,2, ..., x2,N2, Z3, ...
N1, y1,1, y1,2, ..., y1,N1, N2, y2,1, y2,2, ..., y2,N2, L3, ...

矩阵的列定义等高线。每条等高线以一个包含 Z 和 N 值的列开始:

  • Zi - 第 i 条等高线的高度

  • Ni - 第 i 条等高线中的顶点数

  • (xij, yij) - 第 i 条等高线的顶点坐标,其中 j 的范围是从 1 到 Ni

Contour 对象。在显示等高线图后,使用此对象设置属性。

扩展功能

版本历史记录

在 R2006a 之前推出