MATLAB - 绘制 3D 等高线图



等高线是在曲面或数据集中连接等值点的曲线。在数据可视化的背景下,等高线用于表示二元函数的变化。这些线连接具有相同函数值的点,形成曲线,突出显示强度或高度相似的区域。

对于 3D 等高线图,这些曲线存在于三维曲面上。等高线表示曲面与平行于 XY 平面的平面的交点,它们的模式传达了有关曲面形状和特征的信息。

在 MATLAB 中创建 3D 等高线图可以成为可视化三维数据的强大方法。3D 等高线图是三维曲面的图形表示,它使用等高线来显示数据变化。在 MATLAB 中,您可以创建此类图来可视化二元函数。这种类型的图有助于理解三维空间中曲面的结构和行为。

在 matlab 中,我们有以下方法可以帮助绘制等高线,它们是:

  • contour3
  • surfc

让我们详细了解这两种方法。

使用 contour3

MATLAB 中的 contour3 方法用于创建三维等高线图。此函数允许您可视化三维曲面的等高线,显示连接具有相同函数值的点的曲线。

语法

contour3(Z)
contour3(X,Y,Z)
contour3(___,levels)
contour3(___,LineSpec)

语法的详细解释如下:

contour3(Z) - 生成三维等高线图,说明从矩阵 Z 派生的等值线。Z 表示 x-y 平面上的高度值。

contour3(X,Y,Z) - 它提供了 Z 中值的 x 和 y 坐标。

contour3(___,levels) - 如果将 levels 设置为标量,用 n 表示,则该函数会自动在 n 个适当选择的级别或高度上显示等高线。或者,如果您希望在特定高度绘制等高线,则可以将 levels 指定为具有单调递增值的向量。对于高度为 k 的等高线,请使用一个包含两个元素的行向量 [k k] 作为 levels 参数。

contour3(___,LineSpec) - 使用此方法,您可以更改等高线的样式和颜色。

让我们看看上面每个语法的一些示例。

示例 1:使用 contour3(Z)

上面语法的代码如下:

[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = sin(X) + cos(Y);
contour3(Z);

在此示例中:

  • meshgrid 用于创建 X 和 Y 值的网格。
  • 函数 Z = sin(X) + cos(Y) 生成一个矩阵 Z,表示 x-y 平面上的高度值。

使用 contour3(Z),它创建了一个三维等高线图。该函数会根据矩阵 Z 中的值自动确定要显示的等高线。

当您在 matlab 命令窗口中执行代码时,输出为:

contour3z

示例 2:使用 contour3(X,Y,Z)

上面语法的代码为:

[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = sin(X) + cos(Y);
contour3(X, Y, Z);

在此示例中:

  • meshgrid 用于创建 X 和 Y 值的网格。
  • 函数 Z = sin(X) + cos(Y) 生成一个矩阵 Z,表示 x-y 平面上的高度值。

函数 contour3(X, Y, Z) 用于创建三维等高线图。X 和 Y 矩阵提供了 Z 中值的坐标。

当您在 matlab 命令窗口中执行代码时,输出为:

contour3xyz

示例 3:使用 contour3(___,levels)

上面语法的代码为:

[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = sin(X) + cos(Y);
contour3(X, Y, Z, [0, 0.5, 1]);

在此示例中:

  • meshgrid 用于创建 X 和 Y 值的网格。
  • 函数 Z = sin(X) + cos(Y) 生成一个矩阵 Z,表示 x-y 平面上的高度值。

函数 contour3(X, Y, Z, [0, 0.5, 1]) 用于创建三维等高线图。向量 [0, 0.5, 1] 指定特定等高线级别。

当您在 matlab 命令窗口中执行代码时,输出为:

contour3 levels

示例 4:contour3(___,LineSpec)

上面语法的代码为:

[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = sin(X) + cos(Y);
contour3(X, Y, Z, 'LineWidth', 2, 'LineColor', 'red', 'LineStyle', '--');

在此示例中:

  • meshgrid 用于创建 X 和 Y 值的网格。
  • 函数 Z = sin(X) + cos(Y) 生成一个矩阵 Z,表示 x-y 平面上的高度值。

方法 contour3(X, Y, Z, 'LineWidth', 2, 'LineColor', 'red', 'LineStyle', '--') 用于创建具有自定义线型和颜色的三维等高线图。

  • 选项 'LineWidth', 2 指定 2 个点的线宽。
  • 选项 'LineColor', 'red' 指定等高线的红色。
  • 选项 'LineStyle', '--' 指定虚线样式。

当您在 matlab 命令窗口中执行代码时,输出为:

contour3 linespec

使用 surfc()

MATLAB 中的 surfc() 函数用于创建 3D 曲面图,并在曲面上显示等高线。它将曲面图的可视化与等高线相结合,提供了对基础数据的全面视图。“surfc”代表“带等高线的曲面”。

语法

surfc(X,Y,Z)
surfc(X,Y,Z,C)
surfc(___,Name,Value)

以下是上面提到的语法的详细解释:

surfc(X,Y,Z) - 函数生成一个 3D 曲面图,其中包含底层的等高线图。在此可视化中,曲面表示具有独特的实体边缘和面颜色的三维结构。绘制的曲面基于矩阵 Z 中的值,这些值被解释为 X 和 Y 定义的 x-y 平面中网格上方的高度。曲面的颜色根据 Z 矩阵中指定的高度而变化。

surfc(X,Y,Z,C) - 提供对生成图中曲面颜色的显式控制。

surfc(___,Name,Value) - 允许通过一个或多个名称-值对参数指定曲面属性。

示例 1:使用 surfc(X,Y,Z)

语法的代码为:

[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = sin(sqrt(X.^2 + Y.^2));
surfc(X, Y, Z);

在此示例中:

  • meshgrid 用于在 x-y 平面上创建网格。
  • 函数 sin(sqrt(X.^2 + Y.^2)) 用于根据 X 和 Y 定义曲面高度。
  • 然后使用 surfc() 函数根据指定的 X、Y 和 Z 值创建 3D 曲面图,并带有底层的等高线图。

当您在 matlab 命令窗口中执行代码时,输出为:

surfc

示例 2:使用 surfc(X,Y,Z,C)

上面语法的代码为:

[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = peaks(X, Y);
C = Z;
surfc(X, Y, Z, C);

在此示例中:

  • peaks 函数用于生成由 X 和 Y 定义的样本曲面。

  • 矩阵 C 被设置为等于 Z 值,这表示曲面图中每个点的颜色值由 Z 矩阵中相应的的高度决定。
  • 然后使用 surfc() 函数创建具有显式表面颜色控制的 3D 曲面图。

当您在 matlab 命令窗口中执行代码时,输出为:

surfc xyzc

示例 3:使用语法 surfc(___,Name,Value)

上面语法的代码为:

[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = peaks(X, Y);
surfc(X, Y, Z, 'FaceAlpha', 0.5);

在此示例中:

  • 使用 meshgrid 定义 x-y 平面上的网格。
  • peaks 函数用于生成由 X 和 Y 定义的样本曲面。

  • 将 'FaceAlpha', 0.5 名值对参数与 surfc() 一起使用,以将表面的透明度设置为 0.5,使其半透明。

当您在 matlab 命令窗口中执行代码时,输出为:

surfc name value
广告