Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

contourslice

在三维体切片平面中绘制等高线

说明

示例

contourslice(X,Y,Z,V,xslice,yslice,zslice) 在三维体数据 V 的切片中绘制等高线,其中 V 决定等高线的颜色。指定 XYZ 作为坐标数据。使用以下形式之一指定 xsliceyslicezslice 作为切片位置:

  • 要绘制一个或多个与特定轴正交的切片平面,请将切片参数指定为标量或向量。

  • 要沿曲面绘制单个切片,请将所有切片参数指定为定义曲面的矩阵。

contourslice(V,xslice,yslice,zslice) 使用 V 的默认坐标数据。V 中每个元素的 (x,y,z) 位置分别基于列、行和页面索引。

示例

contourslice(___,num) 指定每个切片要绘制的等高线数量。此选项可与先前语法中的任何输入参数一起使用。

contourslice(___,lvls) 指定每个切片内要绘制等高线的位置处的值。

contourslice(___,method) 指定插值方法,其中 method 可以是 'linear''cubic''nearest'

contourslice(ax,___) 在指定坐标区而不是当前坐标区 (gca) 中绘图。

s = contourslice(___) 返回创建的 Patch 对象。

示例

全部折叠

通过三维体数据创建单个切片平面并绘制数据值的等高线。

根据 flow 数据集创建矩阵 XYZV。在 z = 0 的切片平面中绘制 V 的等高线。

[X,Y,Z,V] = flow;
zslice = 0;
contourslice(X,Y,Z,V,[],[],zslice)
grid on

Figure contains an axes. The axes contains 41 objects of type patch.

通过三维体数据创建多个切片平面。在每个切片平面中绘制数据值的等高线。由 MATLAB 选择等高线层级。

创建 V 作为由 v=xe-x2-y2-z2 定义的三维体数据的数组。在 x 轴上 -1.20.82 值处与轴正交的三个切片平面中绘制等高线。通过指定空数组,不创建任何与 y 轴或 z 轴正交的切片平面。将坐标区视图更改为三维视图并添加网格线。

[X,Y,Z] = meshgrid(-2:.2:2);
V = X.*exp(-X.^2-Y.^2-Z.^2);

xslice = [-1.2,0.8,2];   
yslice = [];
zslice = [];
contourslice(X,Y,Z,V,xslice,yslice,zslice)
view(3)
grid on

Figure contains an axes. The axes contains 20 objects of type patch.

通过三维体数据创建多个切片平面。在每个切片平面中绘制数据值的等高线。指定要绘制等高线的层级。然后添加颜色栏。

x 轴上 -1.20.82 值处与轴正交的三个切片平面中绘制等高线。在值 -0.20.4 之间,以 0.01 为间距绘制三维体数据的等高线。添加颜色栏以查看数据值如何映射到等高线颜色。此外,将坐标区视图更改为三维视图并添加网格线。

[X,Y,Z] = meshgrid(-2:.2:2);
V = X.*exp(-X.^2-Y.^2-Z.^2);
xslice = [-1.2,0.8,2];   
lvls = -0.2:0.01:0.4;

contourslice(X,Y,Z,V,xslice,[],[],lvls)
colorbar
view(3)
grid on

Figure contains an axes. The axes contains 63 objects of type patch.

通过三维体数据创建曲面切片并沿三维体数据曲面绘制等高线。指定要绘制的等高线层级的数量。

创建 V 作为由 v=xe-x2-y2-z2 定义的三维体数据的数组。然后,沿 z=x2-y2 定义的曲面显示三维体数据的一个切片。沿曲面绘制 20 条等高线。将坐标区视图更改为三维视图并添加网格线。

[X,Y,Z] = meshgrid(-5:0.2:5);
V = X.*exp(-X.^2-Y.^2-Z.^2);

[xsurf,ysurf] = meshgrid(-2:0.2:2);
zsurf = xsurf.^2-ysurf.^2;
contourslice(X,Y,Z,V,xsurf,ysurf,zsurf,20)
view(3)
grid on

Figure contains an axes. The axes contains 20 objects of type patch.

输入参数

全部折叠

x 轴坐标数据,指定为向量或与 V 大小相同的三维数组。如果指定三维数组,它必须单调正交分布,就好像是由 meshgrid 函数生成的一样。

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

y 轴坐标数据,指定为向量或与 V 大小相同的三维数组。如果指定三维数组,它必须单调正交分布,就好像是由 meshgrid 函数生成的一样。

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

z 轴坐标数据,指定为向量或与 V 大小相同的三维数组。如果指定三维数组,它必须单调正交分布,就好像是由 meshgrid 函数生成的一样。

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

三维体数据,指定为三维数组。

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

x 轴切片值,以下列形式之一指定:

  • 标量 - 在指定位置绘制一个与 x 轴正交的切片平面。

  • 向量 - 在指定位置绘制多个与 x 轴正交的切片平面。

  • [] - 不绘制任何切片平面。

  • 矩阵 - 沿曲面而不是平面绘制切片。如果使用此选项,yslicezslice 也必须是具有相同大小的矩阵。

示例: [2 4] 在值 2 和 4 处绘制与 x 轴正交的切片平面。

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

y 轴切片值,以下列形式之一指定:

  • 标量 - 在指定位置绘制一个与 y 轴正交的切片平面。

  • 向量 - 在指定位置绘制多个与 y 轴正交的切片平面。

  • [] - 不绘制任何切片平面。

  • 矩阵 - 沿曲面而不是平面绘制切片。如果使用此选项,xslicezslice 也必须是具有相同大小的矩阵。

示例: [2 4] 在值 2 和 4 处绘制与 y 轴正交的切片平面。

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

z 轴切片值,以下列形式之一指定:

  • 标量 - 在指定位置绘制一个与 z 轴正交的切片平面。

  • 向量 - 在指定位置绘制多个与 z 轴正交的切片平面。

  • [] - 不绘制任何切片平面。

  • 矩阵 - 沿曲面而不是平面绘制切片。如果使用此选项,xsliceyslice 也必须是具有相同大小的矩阵。

示例: [2 4] 在值 2 和 4 处绘制与 z 轴正交的切片平面。

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

每个切片上的等高线数量,指定为标量。

示例: 4 在每个切片内绘制四条等高线。

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

等高线层级,指定为向量。如果要在每个切片的特定层级绘制一条等高线,请以 [lvl lvl] 形式指定该向量。

示例: [1 3 5] 在每个切片内的层级 1、3 和 5 处绘制等高线。

示例: [4 4] 在每个切片内的层级 4 处绘制一条等高线。

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

插值方法,指定为下列值之一:

  • 'linear' - 在每个维度的相邻网格点进行线性插值。此值是切片为曲面时的默认值。

  • 'cubic' - 在每个维度的相邻网格点进行三次插值。

  • 'nearest' - 最近的网格点值。此值是切片为平面时的默认值。

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

算法

contourslice 函数不会在绘图之前清除现有图。

扩展功能

在 R2006a 之前推出