MATLAB - 三维图
MATLAB - 三维绘图
Section titled “MATLAB - 三维绘图”三维(3D)绘图对于可视化具有三个变量的数据或表示二元函数 z = f(x, y) 至关重要。MATLAB 提供了一套全面的函数,用于创建和操作三维可视化,从简单的线条图到复杂的曲面和体积数据。
常见的三维绘图类型
Section titled “常见的三维绘图类型”以下是用于三维绘图的最常用函数:
- 线条图 (
plot3):在三维空间中绘制线条和点。非常适合可视化轨迹或具有三个分量的时间序列数据。 - 散点图 (
scatter3):在三维空间中显示单个标记。适用于可视化不连接的数据点。 - 网格图 (
mesh):通过连接网格上的点来创建线框曲面。非常适合查看曲面的底层结构。 - 曲面图 (
surf):渲染填充的彩色曲面。最适合创建平滑、逼真的三维数据可视化。
1. 使用 plot3 绘制三维线条图
Section titled “1. 使用 plot3 绘制三维线条图”plot3(X, Y, Z) 函数在三维空间中绘制坐标。如果 X、Y 和 Z 是相同长度的向量,plot3 会绘制连接这些点的线条。
示例 1:绘制螺旋线
Section titled “示例 1:绘制螺旋线”螺旋线是三维曲线的经典示例。我们可以参数化定义它并绘制它。
% 定义参数 't't = 0:pi/50:10*pi;
% 定义螺旋线的参数方程x = sin(t);y = cos(t);z = t;
% 创建三维绘图figure; % 创建新的图窗窗口plot3(x, y, z, 'LineWidth', 2);
% 添加标签和标题title('3D Helix');xlabel('X-axis');ylabel('Y-axis');zlabel('Z-axis');grid on;预期输出: 将出现一个窗口,显示一条蓝色螺旋线(螺旋体),它沿 z 轴上升。绘图包含在一个带有网格以及 X、Y 和 Z 轴标签的三维坐标轴框内。
示例 2:自定义 plot3
Section titled “示例 2:自定义 plot3”你可以自定义线条样式、标记和颜色,就像使用二维 plot 函数一样。
% 使用示例 1 中的相同螺旋线数据t = 0:pi/50:10*pi;x = sin(t); y = cos(t); z = t;
% 用自定义样式绘图figure;plot3(x, y, z, '--ro', ... 'LineWidth', 1.5, ... 'MarkerSize', 4, ... 'MarkerFaceColor', 'y');
title('Customized 3D Helix');xlabel('X-axis');ylabel('Y-axis');zlabel('Z-axis');grid on;预期输出: 螺旋线现在是一条虚线红线(--r),每个数据点都有圆形标记(o)。标记具有黄色填充色。
2. 曲面图和网格图
Section titled “2. 曲面图和网格图”要绘制曲面,你首先需要使用 meshgrid 定义 (x, y) 点的网格,然后计算网格上每个点的相应 z 值。peaks 函数是一个内置的二元样本函数,对于演示这些绘图很有用。
示例 3:mesh 与 surf 的比较
Section titled “示例 3:mesh 与 surf 的比较”% 使用 peaks 函数生成网格和数据[X, Y, Z] = peaks(30);
% 创建两个子图以比较 mesh 和 surffigure;
% 第一个子图:网格图subplot(1, 2, 1);mesh(X, Y, Z);title('Mesh Plot of Peaks');xlabel('X'); ylabel('Y'); zlabel('Z');
% 第二个子图:曲面图subplot(1, 2, 2);surf(X, Y, Z);title('Surface Plot of Peaks');xlabel('X'); ylabel('Y'); zlabel('Z');
% 为曲面图添加颜色条colorbar;预期输出: 一个图窗窗口,其中包含两个并排的绘图。左侧绘图(mesh)显示了 ‘peaks’ 曲面的线框视图,你可以透过彩色线条看到。右侧绘图(surf)显示相同的曲面,但作为一个带有彩色面的实心、不透明对象。颜色条显示在曲面图旁边。
示例 4:自定义曲面外观
Section titled “示例 4:自定义曲面外观”曲面图提供了许多自定义选项,例如控制色图和边缘颜色。
% 生成数据[X, Y, Z] = peaks(30);
figure;% 创建曲面图surf(X, Y, Z);
% 自定义外观title('Customized Surface Plot');xlabel('X'); ylabel('Y'); zlabel('Z');
% 使用不同的色图colormap(cool);
% 关闭曲面上的网格线shading interp; % 插值颜色以获得平滑外观% 或者使用 shading flat; 来获得刻面外观% 或者使用 shading faceted; 来保留网格线
colorbar;预期输出: 将显示一个使用 ‘cool’ 色图(从青色到品红色)的曲面图。shading interp 命令移除了黑色网格线,使曲面看起来平滑且连续。
3. 使用 scatter3 绘制三维散点图
Section titled “3. 使用 scatter3 绘制三维散点图”当你有不属于曲面或线条的单个数据点时,请使用 scatter3。你可以自定义每个标记的大小和颜色,以表示数据的额外维度。
示例 5:具有可变大小和颜色的散点图
Section titled “示例 5:具有可变大小和颜色的散点图”% 创建一些随机数据N = 100;x = rand(N, 1) * 10;y = rand(N, 1) * 10;z = rand(N, 1) * 10;
% 定义大小和颜色数据marker_sizes = rand(N, 1) * 100 + 10; % 大小与某个变量成比例marker_colors = z; % 颜色基于 z 值
figure;scatter3(x, y, z, marker_sizes, marker_colors, 'filled');
title('3D Scatter Plot');xlabel('X-value');ylabel('Y-value');zlabel('Z-value');
% 添加颜色条以显示颜色所代表的含义cb = colorbar;cb.Label.String = 'Z-Value Magnitude';预期输出: 将显示一个三维散点图,其中包含 100 个填充的圆形标记。每个标记的位置由 x、y 和 z 确定。每个标记的大小不同,其颜色对应于其高度(z 值),如颜色条所示。