Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

fcontour

绘制等高线

  • Plot contours

说明

示例

fcontour(f) 根据 xy 的默认区间 [-5 5]z 的固定级别值绘制 z = f(x,y) 函数的等高线。

示例

fcontour(f,xyinterval) 将在指定区间绘图。要对 xy 使用相同的区间,请将 xyinterval 指定为 [min max] 形式的二元素向量。要使用不同的区间,请指定 [xmin xmax ymin ymax] 形式的四元素向量。

fcontour(___,LineSpec) 设置等高线的线型和颜色。例如,'-r' 指定红色线条。在前面的任何输入参数组合之后使用此选项。

示例

fcontour(___,Name,Value) 使用一个或多个名称-值对组参数指定线条属性。

fcontour(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区中。

示例

fc = fcontour(___) 返回 FunctionContour 对象。可使用 fc 查询和修改特定 FunctionContour 对象的属性。有关属性列表,请参阅 FunctionContour 属性

示例

全部折叠

-5<x<5-5<y<5 的默认区间绘制 f(x,y)=sin(x)+cos(y) 的等高线。

f = @(x,y) sin(x) + cos(y);
fcontour(f)

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

指定绘图区间作为 fcontour 的第二个参数。在相同坐标区的不同区间绘制多个输入时,坐标轴范围会调整以显示所有数据。这种行为可以让您绘制分段输入。

绘制分段输入

erf(x)+cos(y)-5<x<0sin(x)+cos(y)0<x<5

区间为 -5<y<5

fcontour(@(x,y) erf(x) + cos(y),[-5 0 -5 5])
hold on
fcontour(@(x,y) sin(x) + cos(y),[0 5 -5 5])
hold off
grid on

Figure contains an axes object. The axes object contains 2 objects of type functioncontour.

以线宽为 2 的虚线绘制 x2-y2 的等高线。

f = @(x,y) x.^2 - y.^2;
fcontour(f,'--','LineWidth',2)

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

使用 hold on 在相同的坐标区上绘制 sin(x)+cos(y)x-y

fcontour(@(x,y) sin(x)+cos(y))
hold on
fcontour(@(x,y) x-y)
hold off

Figure contains an axes object. The axes object contains 2 objects of type functioncontour.

绘制 e-(x/3)2-(y/3)2+e-(x+2)2-(y+2)2 的等高线。将函数等高线对象指定给变量。

f = @(x,y) exp(-(x/3).^2-(y/3).^2) + exp(-(x+2).^2-(y+2).^2);
fc = fcontour(f)

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

fc = 
  FunctionContour with properties:

     Function: @(x,y)exp(-(x/3).^2-(y/3).^2)+exp(-(x+2).^2-(y+2).^2)
    LineColor: 'flat'
    LineStyle: '-'
    LineWidth: 0.5000
         Fill: off
    LevelList: [0.2000 0.4000 0.6000 0.8000 1 1.2000 1.4000]

  Use GET to show all properties

通过使用圆点表示法设置函数等高线对象的属性,可以将线宽更改为 1,将线型更改为虚线。通过设置 LevelList 属性,可以显示靠近 01 的等高线。添加颜色栏。

fc.LineWidth = 1;
fc.LineStyle = '--';
fc.LevelList = [1 0.9 0.8 0.2 0.1];
colorbar

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

通过填充下列方程的等高线之间的区域,创建看起来像日落的绘图:

erf((y+2)3)-e(-0.65((x-2)2+(y-2)2)).

f = @(x,y) erf((y+2).^3) - exp(-0.65*((x-2).^2+(y-2).^2));
fcontour(f,'Fill','on');

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

如果要改为插补着色,请使用 fsurf 函数,并将其 'EdgeColor' 选项设置为 'none',后跟命令 view(0,90)

使用 'LevelList' 选项设置 fcontour 绘制等高线时所用的级别。

f = @(x,y) sin(x) + cos(y);
fcontour(f,'LevelList',[-1 0 1])

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

使用 'MeshDensity' 选项控制等高线的分辨率。增大 'MeshDensity' 可以使绘图更圆滑、更准确,减小该值可以提高绘图速度。

在 2×1 分块图布局中创建两个绘图。在第一个绘图中,显示 sin(x)sin(y) 的等高线。方形的角不重合。要解决此问题,请将第二个绘图中的 'MeshDensity' 增大到 200。现在的角彼此重合,这说明增大 'MeshDensity' 可以提高分辨率。

f = @(x,y) sin(x).*sin(y);
tiledlayout(2,1)
nexttile
fcontour(f)
title('Default Mesh Density (71)')

nexttile
fcontour(f,'MeshDensity',200)
title('Custom Mesh Density (200)')

Figure contains 2 axes objects. Axes object 1 with title Default Mesh Density (71) contains an object of type functioncontour. Axes object 2 with title Custom Mesh Density (200) contains an object of type functioncontour.

绘制 xsin(y)-ycos(x)。显示网格线、添加标题、添加轴标签。

fcontour(@(x,y) x.*sin(y) - y.*cos(x), [-2*pi 2*pi], 'LineWidth', 2);
grid on
title({'xsin(y) - ycos(x)','-2\pi < x < 2\pi and -2\pi < y < 2\pi'})
xlabel('x')
ylabel('y')

Figure contains an axes object. The axes object with title xsin(y) blank - blank ycos(x) blank -2 pi blank < blank x blank < blank 2 pi blank and blank -2 pi blank < blank y blank < blank 2 pi, xlabel x, ylabel y contains an object of type functioncontour.

通过设置坐标区对象的 XTickLabelXTick 属性设置 x 轴刻度值和关联的标签。使用 gca 访问坐标区对象。按照同样的方式设置 y 轴刻度值和关联的标签。

ax = gca;
ax.XTick = ax.XLim(1):pi/2:ax.XLim(2);
ax.XTickLabel = {'-2\pi','-3\pi/2','-\pi','-\pi/2','0',...
    '\pi/2','\pi','3\pi/2','2\pi'};

ax.YTick = ax.YLim(1):pi/2:ax.YLim(2);
ax.YTickLabel = {'-2\pi','-3\pi/2','-\pi','-\pi/2','0',...
    '\pi/2','\pi','3\pi/2','2\pi'};

Figure contains an axes object. The axes object with title xsin(y) blank - blank ycos(x) blank -2 pi blank < blank x blank < blank 2 pi blank and blank -2 pi blank < blank y blank < blank 2 pi, xlabel x, ylabel y contains an object of type functioncontour.

输入参数

全部折叠

要绘制的函数,指定为命名或匿名函数的函数句柄。

指定 z = f(x,y) 形式的函数。该函数必须接受两个矩阵输入参数,并返回大小相同的矩阵输出参数。为获得最佳性能,应使用数组运算符而不是矩阵运算符。例如,使用 .* (times) 而不是 * (mtimes)。

示例: f = @(x,y) sin(x) + cos(y);

xy 的绘图区间,指定为下列形式之一:

  • [min max] 形式的向量 - 对 xy 都使用区间 [min max]

  • [xmin xmax ymin ymax] 形式的向量 - 对 x 使用区间 [xmin xmax],对 y 使用区间 [ymin ymax]

坐标区对象。如果您不指定坐标区对象,则 fcontour 使用当前坐标区。

线型和颜色,指定为包含线型设定符和/或颜色设定符的字符向量或字符串。

示例: '--r' 指定红色虚线

下面两个表列出了线型和颜色选项。

线型设定符描述
-实线(默认)
--虚线
:点线
-.点划线
颜色设定符描述

y

黄色

m

品红色

c

青蓝色

r

红色

g

绿色

b

蓝色

w

白色

k

黑色

名称-值参数

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

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

示例: 'MeshDensity',30

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

每个方向上的计算点数,以数值形式指定。默认值为 71。由于 fcontour 使用自适应计算,因此实际的计算点数更大。

示例: 30

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

  • 值为 'on' 表示用颜色填充等高线之间的空间。

  • 值为 'off' 表示不填充等高线之间的空间。

等高线层级,指定为 z 值向量。默认情况下,fcontour 函数选择涵盖 ZData 属性中的值范围的值。

设置此属性会将关联的模式属性设置为手动模式。

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

等高线之间的间隔,指定为数值标量。例如,指定值 2 将以 2 为增量绘制等高线。默认情况下,使用 ZData 值来确定 LevelStep

设置此属性会将关联的模式属性设置为 'manual'

示例: 3.4

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

等高线的颜色,指定为 'flat'、RGB 三元组、十六进制颜色代码、颜色名称或短名称。要为每个等高线使用不同的颜色,请指定 'flat'。颜色由线条的等高线值、颜色图以及颜色图与数据值间的缩放映射情况决定。有关颜色映射的详细信息,请参阅控制颜色图范围

要对所有等高线使用相同的颜色,请指定 RGB 三元组、十六进制颜色代码、颜色名称或短名称。

对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符串标量或字符向量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

"none"不适用不适用不适用无颜色

以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

RGB 三元组十六进制颜色代码外观
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。

线宽不能小于像素的宽度。如果将线宽设置为小于系统上像素宽度的值,则线条显示为一个像素的宽度。

输出参数

全部折叠

一个或多个 FunctionContour 对象,以标量或向量形式返回。您可以使用这些对象来查询和修改特定等高线图的属性。有关属性列表,请参阅 FunctionContour 属性

版本历史记录

在 R2016a 中推出

另请参阅

函数

属性