参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。
11.3D图形绘制
11.1 3D图概述
- M A T L A B {\rm MATLAB} MATLAB的 3 D {\rm 3D} 3D图主要有: 3 D {\rm 3D} 3D散点图、 3 D {\rm 3D} 3D线图、 3 D {\rm 3D} 3D曲面图、 3 D {\rm 3D} 3D柱状图、 3 D {\rm 3D} 3D条形图、 3 D {\rm 3D} 3D饼图、 3 D {\rm 3D} 3D气泡图;
-
3
D
{\rm 3D}
3D图形绘制几个关键步骤:
- 构建表示三维数据的矩阵,即构建表示 x 、 y 、 z {\rm x、y、z} x、y、z三个方向数据的矩阵;
- 选择合适的三维绘图函数,常用的三维绘图函数有: s u r f 、 m e s h 、 s c a t t e r 3 、 q u i v e r 3 {\rm surf、mesh、scatter3、quiver3} surf、mesh、scatter3、quiver3等;
- 设置坐标轴范围和三维视角,通过 x l a b e l 、 y l a b e l 、 z l a b e l {\rm xlabel、ylabel、zlabel} xlabel、ylabel、zlabel设置坐标轴标签,通过 v i e w 、 a x i s {\rm view、axis} view、axis设置三维视角;
- 添加光照效果,通过 l i g h t {\rm light} light定义光源,使用 s h o w H i d d e n S u r f a c e s {\rm showHiddenSurfaces} showHiddenSurfaces属性来控制是否显示隐藏面;
- 设置颜色映射,使用合适的颜色映射,突出表现三维图形的特点;
- 添加标题及注释,使用 t i t l e 、 t e x t 、 l e g e n d {\rm title、text、legend} title、text、legend等添加说明文字;
- 保存输出结果,可导出为图片文件或生成动画输出结果;
11.2 3D散点图
-
3 D {\rm 3D} 3D散点图使用 x {\rm x} x轴、 y {\rm y} y轴、 z {\rm z} z轴表示三个不同的变量或维度,每个数据点由三个值确定,分别对应 x {\rm x} x轴、 y {\rm y} y轴、 z {\rm z} z轴上的位置;
-
3 D {\rm 3D} 3D散点图帮助我们更好理解数据的分布、趋势和关系,适用于数据集中包含多个连续或数值型变量的情况;
-
3 D {\rm 3D} 3D散点图常见的应用场景:
- 数据挖掘和探索性数据分析,通过 3 D {\rm 3D} 3D散点图可以直观地观察样本点的分布,发现数据间的内在关系和聚类结构,高效完成特征选择、异常点检测等工作;
- 多元统计分析, 3 D {\rm 3D} 3D散点图可同时展示多个变量,通过点的位置反映各维度的数值,有助于观察多个变量间的相关性,进行多元统计分析;
- 轨迹和流场可视化,使用 3 D {\rm 3D} 3D散点图可视化对象的三维运动轨迹,或显示三维流场中的路径线;
-
3 D {\rm 3D} 3D散点图基本绘制过程:
% 3D散点图绘制函数基本语法: scatter3(x,y,z) scatter3(x,y,z,s,c) % x、y、z:三维坐标向量; % s:点的大小; % c:点的颜色;
% ch11_01.m clear; clc; % 1.生成随机数据; x = rand(500, 1); y = rand(500, 1); z = rand(500, 1); figure; scatter3(x, y, z, 36, z); % 2.标签、标题、坐标轴范围; xlabel('xdata'); ylabel('ydata'); zlabel('zdata'); title('3D散点图基本示例'); axis([0 1 0 1 0 1]); % 3.设置视角角度、添加光照、颜色映射和颜色条; view(-30, 30); light('Style', 'local'); colormap jet; colorbar; % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_01.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
11.3 3D线图
-
3 D {\rm 3D} 3D线图通常用于显示在三个维度 ( X , Y , Z ) ({\rm X,Y,Z}) (X,Y,Z)上的数据趋势和关联性;
-
3 D {\rm 3D} 3D线图主要应用于以下几个方面:
- 轨迹可视化,可在三维空间中可视化对象的运动轨迹,如:飞机、气球的飞行路线、运动员的运行路线等;
- 映射时间的变化趋势,沿着时间轴绘制三维曲线图,展示某一变量随时间的变化情况及趋势,如股票价格、气温变化等时间序列数据;
- 显示空间路径,表示空间或地形中蜿蜒的路径,如:山路、河流、管道等的定量结构信息;
- 功能关系的图像,绘制表示光滑功能关系的三维曲面,如:正弦曲线;
- 线程的执行过程,使用 3 D {\rm 3D} 3D线图表示每个线程的执行过程及时间信息;
- 医学动画,利用 3 D {\rm 3D} 3D折线构建人体器官或运动的图像,如:肌肉收缩过程;
- 游戏设计,构建游戏道具中的三维机械动画,如:角色使用道具的动作;
-
3 D {\rm 3D} 3D线图绘制基本过程:
% ch11_02.m clear; clc; % 1.生成模拟随机数据; t = 0:0.01:10; x = sin(t) .* sin(t); y = cos(t) .* sin(t); z = t; % 2.绘制3D线图; figure; plot3(x, y, z, 'b', 'LineWidth', 2); % 3.标签、标题; xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('3D线图基本示例'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_02.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
-
3 D {\rm 3D} 3D线图基本示例 2 2 2:
% ch11_03.m clear; clc; % 1.生成模拟数据; t = 0:0.01:100; x = t .* t; y = sin(t) .* sin(t); z = 2 * t; % 2.绘制3D线图; figure; plot3(x, y, z, 'r', 'LineWidth', 2); % 3.标签、标题; xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('3D线图基本示例1'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_03.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
11.4 3D曲面图
-
3 D {\rm 3D} 3D曲面图用于显示三维数据的表面形状和曲线;
-
3 D {\rm 3D} 3D曲面图常见的应用场景:
- 地形建模:用 3 D {\rm 3D} 3D曲面图来展示地形高度信息,建立数字高程模型;
- 数学函数可视化:用 3 D {\rm 3D} 3D曲面图来展示多变量函数的高维数据;
- 流体建模:用 3 D {\rm 3D} 3D曲面图来模拟流体的流动形式,建立计算流体动力学模型;
- 医学图像:用 3 D {\rm 3D} 3D曲面图展示 M R I 、 C T {\rm MRI、CT} MRI、CT等医学扫描结果,可视化人体器官和组织结构;
- 计算机图形学:用 3 D {\rm 3D} 3D曲面图表示三维模型的表面,用于计算机动画、游戏、虚拟现实等领域;
- 气象气候学:建立三维气象变量的高度场分布,用 3 D {\rm 3D} 3D曲面图展示天气系统的结构;
- 科学计算可视化:可视化复杂的物理、化学模拟过程,通过 3 D {\rm 3D} 3D曲面图直观呈现模拟结果;
- 数据挖掘:对高维数据进行可视化分析,用 3 D {\rm 3D} 3D曲面图展示数据间的关系;
-
3 D {\rm 3D} 3D曲面图绘制基本过程:
% 曲面图函数surf语法格式: % surf(X, Y, Z) % X、Y:数据点矩阵,表示坐标网格; % Z:数据点矩阵,表示与每个(X,Y)坐标对应的高程或数值数据; % surf函数常见参数: % colormap:颜色映射; % shading:控制着色方式,'flat'或'interp'; % edgecolor:设置曲面边缘的颜色; % facealpha:设置曲面的透明度; % caxis:指定颜色映射范围;
% ch11_04.m clear; clc; % 1.生成随机数据; [x, y] = meshgrid(-100:0.1:100, -100:0.1:100); z = x.^2 - y.^2; % 2.绘制3D曲面图; figure; surf(x, y, z, 'FaceColor', 'interp', 'EdgeColor', 'none'); colormap('parula'); % 3.标签、标题; xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('3D曲面基本示例'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_04.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
-
3 D {\rm 3D} 3D网格曲面图基本绘制过程:
% ch11_05.m clear; clc; % 1.生成随机数据; [x, y] = meshgrid(-5:0.1:5, -5:0.1:5); z = x.^2 - y.^2; % 2.绘制3D网格曲面图; figure; mesh(x, y, z); % 3.标签、标题; xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('3D网格曲面基本示例'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_05.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
11.5 3D柱状图
-
3 D {\rm 3D} 3D柱状图基本绘制过程:
% ch11_06.m clear; clc; % 1.创建随机数据; data = rand(10, 12); % 2.创建3D柱状图; figure; bar3(data); % 3.标签、标题; xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('3D柱状图基本示例'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_06.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
11.6 3D条形图
-
3 D {\rm 3D} 3D条形图绘制基本过程:
% ch11_07.m clear; clc; % 1.创建随机数据; data = rand(10, 12); % 2.创建3D柱状图; figure; bar3h(data); % 3.标签、标题; xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('3D柱状图基本示例'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_07.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
11.7 3D饼图
-
3 D {\rm 3D} 3D饼图绘制基本过程:
% ch11_08.m clear; clc; % 1.创建随机数据; data = [35, 20, 18, 12, 10, 5]; % 2.绘制3D饼图; figure; pie3(data); colormap('turbo'); % 3.标题、图例; title('伏羲科技各部门人数占比'); labels = {'研发部', '国际业务部', '国内业务部', '生产部', '人事部', '管理人员'}; legend(labels, 'Location', 'BestOutside'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_08.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
11.8 3D气泡图
-
3 D {\rm 3D} 3D气泡图用于表示三维数据集中的数据点,每个数据点由三个主要维度表示,使用气泡的大小表示一个附加的数值维度;
-
3 D {\rm 3D} 3D气泡图常用于可视化复杂的多维数据,以显示数据点间的关系和趋势;
-
3 D {\rm 3D} 3D气泡图包含的要素:
- 三维坐标轴:三个坐标轴分别表示数据的不同维度,如: X {\rm X} X轴表示一个维度、 Y {\rm Y} Y轴表示第二个维度、 Z {\rm Z} Z轴表示第三个维度;
- 数据点:每个数据点在三维空间中用一个气泡或球表示,气泡的位置由 X {\rm X} X坐标、 Y {\rm Y} Y坐标、 Z {\rm Z} Z坐标决定,气泡的大小表示第四个维度;
- 气泡颜色:气泡颜色可表示另一个维度或属性,如使用不同颜色来表示数据点所属的类别;
-
3 D {\rm 3D} 3D气泡图适合用于可视化复杂的数据集,如:市场分析、科学研究、工程领域等;
-
3 D {\rm 3D} 3D气泡图基本绘制过程:
% 3D气泡图语法格式: bubblechart3(X, Y, Z, S) % 参数说明: % X,Y,Z:表示数据点的三维坐标,分别是X轴、Y轴、Z轴的数据; % S:表示气泡的大小数据,用于表示每个数据点的大小;
% ch11_09.m clear; clc; % 1.创建10个模拟数据; X = rand(1, 10); Y = rand(1, 10); Z = rand(1, 10); size = rand(1, 10); color = rand(1, 10); % 2.绘制3D气泡图; bubblechart3(X, Y, Z, size, color); % 3.标题、标签; xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('3D气泡图基本示例'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch11_09.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);