当前位置: 首页 > article >正文

MATLAB绘图基础11:3D图形绘制

参考书:《 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} xyz三个方向数据的矩阵;
    • 选择合适的三维绘图函数,常用的三维绘图函数有: 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} surfmeshscatter3quiver3等;
    • 设置坐标轴范围和三维视角,通过 x l a b e l 、 y l a b e l 、 z l a b e l {\rm xlabel、ylabel、zlabel} xlabelylabelzlabel设置坐标轴标签,通过 v i e w 、 a x i s {\rm view、axis} viewaxis设置三维视角;
    • 添加光照效果,通过 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} titletextlegend等添加说明文字;
    • 保存输出结果,可导出为图片文件或生成动画输出结果;
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)]);
    

    1

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)]);
    

    2

  • 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)]);
    

    3

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} MRICT等医学扫描结果,可视化人体器官和组织结构;
    • 计算机图形学:用 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)]);
    

    4

  • 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)]);
    

    5

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)]);
    

    6

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)]);
    

    7

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)]);
    

    8

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)]);
    

    9


http://www.kler.cn/a/403363.html

相关文章:

  • Android 分区相关介绍
  • 美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
  • python成长技能之正则表达式
  • springboot基于微信小程序的旧衣回收系统的设计与实现
  • STM32与CS创世SD NAND(贴片SD卡)结合完成FATFS文件系统移植与测试是一个涉及硬件与软件综合应用的复杂过程
  • IntelliJ+SpringBoot项目实战(十二)--设计项目多模块依赖关系和跨模块调用服务和接口
  • GetVolumeInformation函数使用记录
  • Flutter:TweenAnimationBuilder自定义隐式动画
  • Telegram bot Mini-App开发实践---Telegram简单介绍与初始化小程序获取window.Telegram.WebApp对象并解析
  • 解读缓存问题的技术旅程
  • 利用Python爬虫获取淘宝店铺详情
  • windows 操作系统下载 Android源码教程
  • k8s error uploading crisocket处理过程
  • 从机器人到高速线,线缆行业如何提升竞争力
  • 提取repo的仓库和工作树(无效)
  • [Unity]游戏开发基础2- 从草图到最小可用产品:视频游戏创作阶段详解
  • .gitignore文件
  • AWTK-WIDGET-WEB-VIEW 实现笔记 (4) - Ubuntu
  • 一学就废|Python基础碎片,列表(List)
  • 【Tealscale + Headscale + 自建服务器】异地组网笔记
  • ESP32-S3模组上跑通esp32-camera(21)
  • 2024/11/17周报
  • 网络属性及相关配置常用命令-下篇
  • 腾讯:将LLM排序能力迁移至BERT
  • cesium for unity的使用
  • Flink整合Hudi及使用