# fcontour


绘制等高线

函数库: TyPlot

# 语法

fcontour(f)
fcontour(f, xyinterval)
fcontour(___; Key=Value)
fcontour(ax, ___)
fc = fcontour(___)

# 说明

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


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


fcontour(___,Key=Value)使用一个或多个名称-值对组参数指定等高线图的其他选项。请在所有其他输入参数之后指定这些选项。


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


fc=fcontour(___)返回 fcontour 对象。可使用 fc 查询和修改特定 fcontour 对象的属性。

# 示例

绘制函数的等高线

的默认区间绘制 的等高线。

using TyPlot
f = (x,y)->sin(x)+cos(y)
fcontour(f)
指定绘图区间并绘制分段等高线图

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

绘制分段输入

区间为

using TyMath
using TyPlot
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")
更改线型和线宽

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

using TyPlot
f = (x,y)-> x.^2 - y.^2;
fcontour(f, linestyle="--", linewidth=2)
绘制多个等高线图

使用 hold("on") 在相同的坐标区上绘制

using TyPlot
fcontour((x,y)->sin(x)+cos(y))
hold("on")
fcontour((x,y)->x-y)
hold("off")
创建后修改等高线图

绘制的等高线。将函数等高线对象指定给变量。

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

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

for collection in fc.collections
    collection.set_linewidth(1)
    collection.set_linestyle("--")
end
plt_update()
填充等高线之间的区域

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

using TyMath
using TyPlot
f = (x,y)-> erf((y+2).^3) - exp(-0.65*((x-2).^2+(y-2).^2));
fcontour(f,filled=true);
指定等高线的级别

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

using TyPlot
f = (x,y)-> sin(x) + cos(y);
fcontour(f,levellist=[-1, 0, 1])
控制等高线的分辨率

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

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

using TyPlot
f = (x,y)-> sin(x).*sin(y);
ax1 = subplot(2,1,1)
fcontour(f)
title("Default Mesh Density (71)")

ax2 = subplot(2,1,2)
fcontour(ax2,f, meshdensity=200)
title("Custom Mesh Density (200)")
添加标题和轴标签以及格式化刻度

绘制 。显示网格线、添加标题、添加轴标签。

using TyPlot
fcontour((x,y)->x.*sin(y) - y.*cos(x), [-2*pi 2*pi], linewidth=2)
grid("on")
title("xsin(y) - ycos(x)\n"*raw"-2$\pi$ < x < 2$\pi$ and -2$\pi$ < y < 2$\pi$")

xlabel("x")
ylabel("y")

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

ax = gca();
xticks(xlim()[1]:pi/2:xlim()[2])
xticklabels(ax, [raw"-2$\pi$", raw"-3$\pi$/2", raw"-$\pi$",raw"-$\pi$/2","0",raw"$\pi$/2",raw"$\pi$",raw"3$\pi$/2",raw"2$\pi$"]);

yticks(ylim()[1]:pi/2:ylim()[2])
yticklabels(ax, [raw"-2$\pi$", raw"-3$\pi$/2",raw"-$\pi$",raw"-$\pi$/2","0",raw"$\pi$/2",raw"$\pi$",raw"3$\pi$/2",raw"2$\pi$"]);

# 输入参数

f - 要绘制的函数
函数句柄

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

指定 z = f(x,y) 形式的函数。该函数必须接受两个矩阵输入参数,并返回大小相同的矩阵输出参数。

示例:

xyinterval - x 和 y 的绘图区间
[-5 5 -5 5] (默认) | [min max] 形式的向量 | [xmin xmax ymin ymax] 形式的向量

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

  • [min max] 形式的向量 - 对 x 和 y 都使用区间 [min max]。
  • [xmin xmax ymin ymax] 形式的向量 - 对 x 使用区间 [xmin xmax],对 y 使用区间 [ymin ymax]。
ax - 坐标区对象
坐标区对象

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

# 名称-值对组参数

指定可选的、以逗号分隔的 Key=Value 对组参数。Key 为参数名称,Value 为对应的值。您可采用任意顺序指定多个名称-值对组参数,如 Key1=Value1,...,KeyN=ValueN 所示。

示例: fcontour(f,meshdensity=30) 指定每个方向上的计算点数的等高图。

meshdensity - 每个方向上的计算点数
71 (默认) | 数字

每个方向上的计算点数,以数值形式指定。默认值为 71。

示例: 30

filled - 在等高线间进行填充
false (默认) | true

在等高线间进行填充,指定为 "false" 或 "true"。

levellist - 等高线层级
由 z 值组成的向量

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

数据类型: Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64

levelstep - 等高线间距
0 (默认) | 数值标量

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

示例: 3.4

数据类型: Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64

linewidth - 线宽
1.5 (默认) | 正值

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

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

linestyle - 线型
"-" (默认) | "--" | ":" | "-."| "none"

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

线型 说明 表示的线条
"-" 实线
"--" 虚线
":" 点线
"-." 点划线
"none" 无线条 无线条
levels - 层级
标量 | 向量

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

  • 要在 n 个自动选择的高度绘制等高线,请将 levels 指定为标量值 n。
  • 要在某些特定高度绘制等高线,请将 levels 指定为单调递增值的向量。
  • 要在单个高度 k 处绘制等高线,请将 levels 指定为二元素行向量 [k]。

示例: f = (x,y)-> sin(x) + cos(y); fcontour(f,levellist=[-1, 0, 1],levels=2) 。

数据类型: Int16 | Int32 | Int64 | Float16 | Float32 | Float64

# 输出参数

fc - fcontour对象
fcontour对象

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

# 另请参阅

# 函数

clabel | contour