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.rhkb.cn/news/475872.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合卡尔曼滤波(Ensemble Kalman Filter),用于二维滤波(模拟平面上的目标跟踪),MATLAB代码

集合卡尔曼滤波(Ensemble Kalman Filter) 文章目录 引言理论基础卡尔曼滤波集合卡尔曼滤波初始化预测步骤更新步骤卡尔曼增益更新集合 MATLAB 实现运行结果3. 应用领域结论 引言 集合卡尔曼滤波(Ensemble Kalman Filter, EnKF)是…

Bug:gomonkey系列问题(undefined: buildJmpDirective)

Bug:gomonkey系列问题(undefined: buildJmpDirective) 最近拉代码发现其他同事写单测使用的是gomonkey,我本地mac m3芯片执行报错,gomonkey: undefined: buildJmpDirective。 对go convey不熟悉的朋友可以看这篇文章: Go Convey测…

Arcgis 地图制作

地图如下,不同历史时期:

【AI编程实战】安装Cursor并3分钟实现Chrome插件(保姆级)

Cursor介绍 https://www.cursor.com/ 一句话介绍:AI代码编辑器,当前最火的AI编程器 软件下载与安装 下载 打开Cursor官网下载,会根据操作系统的差别进行选择 https://www.cursor.com/ 这里下载的内容很小,是个安装器&#x…

C指针之舞——指针探秘之旅(2)

❤博客主页:折枝寄北-CSDN博客 ❤专栏:C语言学习专栏 在上一篇博客文章:C指针之舞——指针探秘之旅-CSDN博客中,我们学习了字符指针,指针数组,数组指针,数组传参和指针传参等内容,…

大数据新视界 -- Impala 性能优化:量子计算启发下的数据加密与性能平衡(下)(30 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

RPC框架负载均衡

什么是负载均衡? 当一个服务节点无法支撑现有的访问量时,会部署多个节点,组成一个集群,然后通过负载均衡,将请求分发给这个集群下的每个服务节点,从而达到多个服务节点共同分担请求压力的目的。 负载均衡主…

JMeter监听器与压测监控之 InfluxDB

1. 简介 在本文中,我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB,并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库,而 JMeter 是一个开源的性能测试工具,可以用于对各种服务进行负载测试和性能监…

Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计

概述 Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计,探索 RISC-V Vector1.0 的前沿技术,选择嘉楠科技的 Canmv K230D Zero 开发板。这款创新的开发板是由嘉楠科技与香蕉派开源社区联合设计研发,搭载了先进的勘智 K230D 芯片。 K230…

如何判断注入点传参类型--理论

注入点传参类型 在我们找到注入点后,首先要判断传参的类型,才能以正确的形式向数据库查询数据。 注入点传参一般分为数字型和字符型。 数字型:当传入的参数为整形时,存在SQL注入漏洞,就可以认为是数字型注入。 字符…

HarmonyOS(57) UI性能优化

性能优化是APP开发绕不过的话题,那么在HarmonyOS开发过程中怎么进行性能优化呢?今天就来总结下相关知识点。 UI性能优化 1、避免在组件的生命周期内执行高耗时操作2、合理使用ResourceManager3、优先使用Builder方法代替自定义组件4、参考资料 1、避免在…

AI Prompt Engineering

AI Prompt Engineering 简介 Prompt Engineering, 提示工程,是人工智能领域的一项技术,它旨在通过设计高效的提示词(prompts)来优化生成式 AI(如 GPT、DALLE 等)的输出。提示词是用户与生成式 AI 交互的核…

NVR接入录像回放平台EasyCVR视频融合平台加油站监控应用场景与实际功能

在现代社会中,加油站作为重要的能源供应点,面临着安全监管与风险管理的双重挑战。为应对这些问题,安防监控平台EasyCVR推出了一套全面的加油站监控方案。该方案结合了智能分析网关V4的先进识别技术和EasyCVR视频监控平台的强大监控功能&#…

大语言模型中ReLU函数的计算过程及其函数介绍

文章目录 概要ReLU定义 概要 **ReLU 作用:**主要用于为神经网络引入非线性能力,作用是将输入中的整数保留原值,负数置为 0。 从而在层与层之间引入非线性,使神经网络能够拟合复杂的非线性关系。 **ReLU使用场景:**Lla…

【图像检测】深度学习与传统算法的区别(识别逻辑、学习能力、泛化能力)

识别逻辑 深度学习 使用了端到端的学习策略,直接学习从图像到检测结果的映射关系,自动提取特征,并且根据特征与特征之间的关系,计算出检测结果。 传统算法 则是人工提取特征,比如边缘特征,直线特征&#x…

C++-第25课-哈希表性能的分析

目录 一、哈希表概述 1. 什么是哈希表​编辑 2. 哈希表的优点 3. 哈希表的缺点 二、哈希函数 常见哈希函数 三. 哈希冲突的原因和解决方法 一.哈希冲突的原因 二、哈希冲突的解决方法 1. 链表法(Separate Chaining) 2. 开放寻址法(…

HDMI数据传输三种使用场景

视频和音频的传输 在HDMI传输音频中有3种方式进行传输,第一种将音频和视频信号被嵌入到同一数据流中,通过一个TMDS(Transition Minimized Differential Signaling)通道传输。第二种ARC。第三张种eARC。这三种音频的传输在HDMI线中…

LCR 184.设计自助结算系统

1.题目要求: 2.题目代码: class Checkout { public:deque<int> array;Checkout() {array.clear();}//求最大值int get_max() {if(array.size() 0){return -1;}else{vector<int> temp(array.begin(),array.end());vector<int> :: iterator it max_element…

Vue3-小兔鲜项目出现问题及其解决方法(未写完)

基础操作 &#xff08;1&#xff09;使用create-vue搭建Vue3项目 要保证node -v 版本在16以上 &#xff08;2&#xff09;添加pinia到vue项目 npm init vuelatest npm i pinia //导入creatPiniaimport {createPinia} from pinia//执行方法得到实例const pinia createPinia()…

VUE:基于MVVN的前端js框架

文章目录 vue框架v-show vue框架 注意是 先写函数名&#xff0c;再写function。 handle:function (){}下面是错误的 function:handle(){}3 v-show 本质上等于号后面还是判断条件&#xff0c;所以不能写赋值语句&#xff0c;下面是正确的 下面是错误的 v-show " ge…