15.2.2 三维图

函数 mesh 生成网格曲面图。例如:

tx = ty = linspace (-8, 8, 41)';
[xx, yy] = meshgrid (tx, ty);
r = sqrt (xx .^ 2 + yy .^ 2) + eps;
tz = sin (r) ./ r;
mesh (tx, ty, tz);
xlabel ("tx");
ylabel ("ty");
zlabel ("tz");
title ("3-D Sombrero plot");

将生成如图 图 15.5 所示的熟悉的"阔边帽"图。注意使用函数 meshgrid 来创建 X 和 Y 坐标矩阵,用于绘制 Z 数据。ndgrid 函数与 meshgrid 类似,但适用于 N 维矩阵。

mesh

图 15.5:网格图。

meshc 函数与 mesh 类似,但还会为曲面绘制等高线图。

plot3 函数显示任意三维数据,而不要求数据构成曲面。例如:

t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));
plot3 (r.*sin (t), r.*cos (t), z);
xlabel ("r.*sin (t)");
ylabel ("r.*cos (t)");
zlabel ("z");
title ("plot3 display of 3-D helix");

将显示如图 图 15.6 所示的三维螺旋线。

plot3

图 15.6:三维螺旋线。

最后,view 函数可以改变三维图的视角。

 
mesh (x, y, z)
mesh (z)
mesh (…, c)
mesh (…, prop, val, …)
mesh (hax, …)
h = mesh (…)

绘制三维线框网格。

线框网格使用矩形绘制。矩形的顶点 [x, y] 通常是 meshgrid 在 x-y 平面上的二维矩形区域内的输出。z 确定每个顶点在平面上方的高度。如果只给出了一个 z 矩阵,则在网格 x = 1:columns (z), y = 1:rows (z) 上进行绘制。因此,z 的列对应不同的 x 值,z 的行对应不同的 y 值。

网格的颜色通过线性缩放 z 值以适应当前颜色图的范围来计算。使用 clim 和/或更改颜色图来控制外观。

(可选)可以通过提供颜色矩阵 c 来独立于 z 指定网格的颜色。

任何属性/值对都将直接传递给底层的曲面对象。完整的属性列表请参见 Surface Properties

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是所创建的曲面对象的图形句柄。

另请参阅: ezmesh, meshc, meshz, trimesh, contour, surf, surface, meshgrid, hidden, shading, colormap, clim.

 
meshc (x, y, z)
meshc (z)
meshc (…, c)
meshc (…, prop, val, …)
meshc (hax, …)
h = meshc (…)

绘制带有底层等高线的三维线框网格。

线框网格使用矩形绘制。矩形的顶点 [x, y] 通常是 meshgrid 在 x-y 平面上的二维矩形区域内的输出。z 确定每个顶点在平面上方的高度。如果只给出了一个 z 矩阵,则在网格 x = 1:columns (z), y = 1:rows (z) 上进行绘制。因此,z 的列对应不同的 x 值,z 的行对应不同的 y 值。

网格的颜色通过线性缩放 z 值以适应当前颜色图的范围来计算。使用 clim 和/或更改颜色图来控制外观。

(可选)可以通过提供颜色矩阵 c 来独立于 z 指定网格的颜色。

任何属性/值对都将直接传递给底层的曲面对象。完整的属性列表请参见 Surface Properties

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是一个 2 元素向量,包含所创建的曲面对象和所创建的等高线图的图形句柄。

另请参阅: ezmeshc, mesh, meshz, contour, surfc, surface, meshgrid, hidden, shading, colormap, clim.

 
meshz (x, y, z)
meshz (z)
meshz (…, c)
meshz (…, prop, val, …)
meshz (hax, …)
h = meshz (…)

绘制带有周围幕布的三维线框网格。

线框网格使用矩形绘制。矩形的顶点 [x, y] 通常是 meshgrid 在 x-y 平面上的二维矩形区域内的输出。z 确定每个顶点在平面上方的高度。如果只给出了一个 z 矩阵,则在网格 x = 1:columns (z), y = 1:rows (z) 上进行绘制。因此,z 的列对应不同的 x 值,z 的行对应不同的 y 值。

网格的颜色通过线性缩放 z 值以适应当前颜色图的范围来计算。使用 clim 和/或更改颜色图来控制外观。

(可选)可以通过提供颜色矩阵 c 来独立于 z 指定网格的颜色。

任何属性/值对都将直接传递给底层的曲面对象。完整的属性列表请参见 Surface Properties

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是所创建的曲面对象的图形句柄。

另请参阅: mesh, meshc, contour, surf, surface, waterfall, meshgrid, hidden, shading, colormap, clim.

 
hidden
hidden on
hidden off
mode = hidden (…)

控制网格隐藏线的移除。

在无参数调用时,隐藏线移除状态将切换。

当使用模式 "on""off" 调用时,将相应设置状态。

可选的输出参数 mode 是当前状态。

隐藏线移除决定了网格绘图后面哪些图形对象可见。默认情况下,网格是不透明的,网格后面的线条不可见。如果禁用了隐藏线移除,则可以通过网格的面(开口)看到网格后面的对象,尽管网格线仍然是不透明的。

另请参阅: mesh, meshc, meshz, ezmesh, ezmeshc, trimesh, waterfall.

 
surf (x, y, z)
surf (z)
surf (…, c)
surf (…, prop, val, …)
surf (hax, …)
h = surf (…)

绘制三维曲面网格。

曲面网格使用着色矩形绘制。矩形的顶点 [x, y] 通常是 meshgrid 在 x-y 平面上的二维矩形区域内的输出。z 确定每个顶点在平面上方的高度。如果只给出了一个 z 矩阵,则在网格 x = 1:columns (z), y = 1:rows (z) 上进行绘制。因此,z 的列对应不同的 x 值,z 的行对应不同的 y 值。

曲面的颜色通过线性缩放 z 值以适应当前颜色图的范围来计算。使用 clim 和/或更改颜色图来控制外观。

(可选)可以通过提供颜色矩阵 c 来独立于 z 指定曲面的颜色。

任何属性/值对都将直接传递给底层的曲面对象。完整的属性列表请参见 Surface Properties

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是所创建的曲面对象的图形句柄。

另请参阅: ezsurf, surfc, surfl, mesh, surface, meshgrid, hidden, shading, lighting, colormap, clim.

 
surfc (x, y, z)
surfc (z)
surfc (…, c)
surfc (…, prop, val, …)
surfc (hax, …)
h = surfc (…)

绘制带有底层等高线的三维曲面网格。

曲面网格使用着色矩形绘制。矩形的顶点 [x, y] 通常是 meshgrid 在 x-y 平面上的二维矩形区域内的输出。z 确定每个顶点在平面上方的高度。如果只给出了一个 z 矩阵,则在网格 x = 1:columns (z), y = 1:rows (z) 上进行绘制。因此,z 的列对应不同的 x 值,z 的行对应不同的 y 值。

曲面的颜色通过线性缩放 z 值以适应当前颜色图的范围来计算。使用 clim 和/或更改颜色图来控制外观。

(可选)可以通过提供颜色矩阵 c 来独立于 z 指定曲面的颜色。

任何属性/值对都将直接传递给底层的曲面对象。完整的属性列表请参见 Surface Properties

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是一个 2 元素向量,包含所创建的曲面对象和所创建的等高线图的图形句柄。

另请参阅: ezsurfc, surf, surfl, meshc, surface, meshgrid, contour, hidden, shading, colormap, clim.

 
surfl (x, y, z)
surfl (z)
surfl (…, c)
surfl (…, prop, val, …)
surfl (hax, …)
h = surfl (…)

绘制带有基于光照着色的三维曲面网格。

曲面网格使用着色矩形绘制。矩形的顶点 [x, y] 通常是 meshgrid 在 x-y 平面上的二维矩形区域内的输出。z 确定每个顶点在平面上方的高度。如果只给出了一个 z 矩阵,则在网格 x = 1:columns (z), y = 1:rows (z) 上进行绘制。因此,z 的列对应不同的 x 值,z 的行对应不同的 y 值。

光源的颜色和位置可以通过使用 light 函数进行更改。

(可选)可以通过提供颜色矩阵 c 来独立于 z 指定曲面的颜色。

任何属性/值对都将直接传递给底层的曲面对象。完整的属性列表请参见 Surface Properties

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是所创建的曲面对象的图形句柄。

另请参阅: ezsurfl, surf, surfc, light, lighting, surface, meshgrid, hidden, shading, colormap, clim.

 
ribbon (y)
ribbon (x, y)
ribbon (x, y, width)
ribbon (hax, …)
h = ribbon (…)

绘制三维带状图。

带状图类似于 waterfall 图,但每列 y 会绘制一条具有特定宽度的条带。由 x 向量确定条带的位置。

如果只给出了一个参数,则 y 被视为矩阵,其列代表不同的数据集。在这种情况下,x1:rows (y) 隐式定义。

可选的参数 width 指定每个条带的宽度(默认值为 0.75)。

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是所创建的曲面对象的图形句柄向量。

另请参阅: waterfall, mesh, surface.

 
meshgrid (x, y)
meshgrid (x, y, z)
[xx, yy, zz] = meshgrid (x, y, z)

给定 xy 的列向量,返回一个矩阵 xxyy,使得 xx(i, j) = x(i)yy(i, j) = y(j)。换句话说,它们在二维网格上为每个点生成了相应的 x 和 y 坐标。对于三维绘图,网格由 xyz 定义,生成了三个三维数组 xxyyzz

有关更多信息,请参阅 ndgrid 示例

另请参阅: ndgrid.

 
view (azimuth, elevation)
view (az, el)
view (dim)
view (hax, …)
[azimuth, elevation] = view ()

查询或设置当前坐标轴的相机视线方位角和仰角。

azimuthelevation 是球面坐标角。正 azimuth 值表示在 x-y 平面内从 y 轴向 x 轴旋转的角度。正 elevation 值表示在 z 正方向上从 x-y 平面向上旋转的角度。

如果给出了一个二维点 [azimuth, elevation],则设置视角。

如果给出了一个三维点 [x, y][x, y, z],则确定相机视线方向。

dim 字符串参数影响视角,如下所示:

"xy"

二维:方位角 = 90°,仰角 = 90°。

"xz"

方位角 = 0°,仰角 = 0°。

"yz"

方位角 = 90°,仰角 = 0°。

"3d"

三维:方位角 = -37.5°,仰角 = 30°。

如果第一个参数 hax 是坐标轴句柄,则对指定的坐标轴进行操作。

如果在无参数调用时将输出参数,则返回当前方位角和仰角。

另请参阅: axes, camlookat.

 
lighting (type)
lighting (hax, type)

设置补丁或曲面图形对象的光照算法。

type 的有效参数是:

"flat"

对图形对象面应用光照。

"gouraud"

对图形对象的顶点应用光照,并线性插值面颜色。

"none"

不应用光照。

如果第一个参数 hax 是坐标轴句柄,则对指定的坐标轴进行操作。

另请参阅: light, material, patch, surface, shading.

 
light ()
light (hax)
light (…, prop, val)
h = light (…)

创建一个光源对象。

光源对象用于光照计算。可以指定属性/值对作为参数。如果是第一个参数 hax 是坐标轴句柄,则将光源添加到该坐标轴。默认情况下,光源添加到由 gca 返回的当前坐标轴。可选的返回值 h 是光源对象的图形句柄。

另请参阅: lighting, material, camlight.

 
material (type)
material (hax, type)
material (..., prop, val)

设置光照的材质属性。

type 的有效参数是:

"shiny"

对象的镜面反射指数较大。

"dull"

对象的镜面反射指数较小。

"metal"

对象的镜面反射指数和反射强度非常高。

"default"

材质属性的默认设置。

此外,可以通过指定以下属性/值对来完全控制材质属性:"ambientstrength""diffusestrength""specularexponent""specularstrength"。更多帮助请参阅 Graphics Object Properties

如果第一个参数 hax 是坐标轴句柄,则对指定的坐标轴进行操作。

另请参阅: light, lighting.

 
camlight (…)
camlight (hax, …)
h = camlight (…)

在相机位置附近创建一个或移动一个光源。

如果光源不存在,则在相机位置的右侧和上方创建一个 light 对象。如果光源已存在,则将其移动到相机位置的右侧和上方(相对于相机)。

如果第一个参数 hax 是坐标轴句柄,则对该坐标轴进行操作。

可选的返回值 h 是光源对象的图形句柄。

另请参阅: light, lighting.

 
shading (type)
shading (hax, type)

设置补丁或曲面图形对象的着色方式。

type 的有效参数是:

"flat"

使用不可见边缘的单色补丁。

"faceted"

使用黑色边缘的单色补丁。

"interp"

对补丁顶点之间的颜色进行插值,补丁边缘不可见。

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

另请参阅: fill, mesh, patch, pcolor, surf, surface, hidden, lighting.

 
scatter3 (x, y, z)
scatter3 (x, y, z, s)
scatter3 (x, y, z, s, c)
scatter3 (…, style)
scatter3 (…, "filled")
scatter3 (…, prop, val)
scatter3 (hax, …)
h = scatter3 (…)

绘制三维散点图。

在每个由向量 xyz 中的坐标定义的点处绘制一个标记。

标记的大小由 s 确定,可以是标量,也可以是与 xyz 长度相同的向量。如果 s 未给出或为空矩阵,则使用默认值 8 点。

标记的颜色由 c 确定,可以是定义固定颜色的字符串;一个 3 元素向量,给出颜色的红色、绿色和蓝色分量;一个与 x 长度相同的向量,提供当前颜色图的缩放索引;或者一个 Nx3 矩阵,单独定义每个标记的 RGB 颜色。

可以通过 style 参数更改要使用的标记,该参数是以与 plot 命令相同的方式定义标记的字符串。如果未指定标记,则默认为 "o"(圆圈)。如果给出了参数 "filled",则填充标记。

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是表示点的散点对象的图形句柄。

[x, y, z] = peaks (20);
scatter3 (x(:), y(:), z(:), [], z(:));

编程说明:完整的属性列表请参见 Scatter Properties

另请参阅: scatter, patch, plot.

 
waterfall (x, y, z)
waterfall (z)
waterfall (…, c)
waterfall (…, prop, val, …)
waterfall (hax, …)
h = waterfall (…)

绘制三维瀑布图。

瀑布图类似于 meshz 图,但仅显示 z(x 值)行的网格线。

线框网格使用矩形绘制。矩形的顶点 [x, y] 通常是 meshgrid 在 x-y 平面上的二维矩形区域内的输出。z 确定每个顶点在平面上方的高度。如果只给出了一个 z 矩阵,则在网格 x = 1:columns (z), y = 1:rows (z) 上进行绘制。因此,z 的列对应不同的 x 值,z 的行对应不同的 y 值。

网格的颜色通过线性缩放 z 值以适应当前颜色图的范围来计算。使用 clim 和/或更改颜色图来控制外观。

(可选)可以通过提供颜色矩阵 c 来独立于 z 指定网格的颜色。

任何属性/值对都将直接传递给底层的曲面对象。完整的属性列表请参见 Surface Properties

如果第一个参数 hax 是坐标轴句柄,则绘制到此坐标轴,而非 gca 返回的当前坐标轴。

可选的返回值 h 是所创建的曲面对象的图形句柄。

另请参阅: meshz, mesh, meshc, contour, surf, surface, ribbon, meshgrid, hidden, shading, colormap, clim.