# 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 分块图布局中创建两个绘图。在第一个绘图中,显示
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对象。在显示等高线图后,使用此对象设置属性。



