MATLAB绘图基础7:单变量图形绘制

news2024/9/23 5:21:14

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。



7.单变量图形绘制
7.1 直方图
  • 直方图 ( H i s t o g r a m ) ({\rm Histogram}) (Histogram):一种常用于可视化数据分布的图形类型,用于显示数据集中各数值范围的频率分布情况;

  • 直方图将数据范围划分为若干个连续的区间,统计每个区间内数据点的数量或频率,用条形图形式展示;

  • 直方图特点和构成要素:

    • X {\rm X} X轴:通常表示数据的数值范围或区间,按照一定的划分方式排列;
    • Y {\rm Y} Y轴:通常表示每个数值范围内数据点的频率或数量,可以表示数据点的个数,可以表示相对频率(频率与总数的比值);
    • 区间:数据范围被划分为多个箱子或区间,每个箱子用来容纳特定范围内的数据点,箱子宽度可根据数据的分布情况调整;
    • 条形:每个箱子对应一个条形,高度表示该箱子内的数据点数量或频率,高度越高,即该范围内数据点越多;
  • 直方图可用于探索数据的分布特征,如:数据的中心位置、离散程度、异常值等;

  • 直方图绘制基本步骤:

    % 直方图绘制基本步骤:
    % 1.准备数据:首先准备好需要绘制直方图的数据;
    
    % 2.选择分箱数量:决定直方图中的分箱数量,会影响可视化效果;
    
    % 3.绘制直方图:使用histogram绘制直方图;
    histogram(data, num_bins);
    
    % 参数说明:
    % data:数据向量;
    % num_bins:分箱数量;
    
    % 4.自定义外观:自定义外观包括颜色、边界线型、透明度等;
    
    % ch07_01.m
    clear;
    clc;
    
    % 直方图绘制基本示例:
    % 1.生成随机数据;
    data = randn(10000, 1);
    
    % 2.绘制直方图,分箱20;
    histogram(data, 20);
    
    % 3.标签、标题等设置;
    xlabel('X');ylabel('Y');
    title('直方图');
    grid on;
    
    % 4.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_01.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    1

  • 直方图使用示例:

    % ch07_02.m
    clear;
    clc;
    
    % 1.生成一个高三年级数学考试成绩的模拟数据;
    min = 0;        % 分数下限:0分;
    max = 150;      % 分数上限:150;
    n = 2000;       % 学生数量:高三年级2000人;
    
    randomIntegers = randi([min, max], 1, n);
    
    % 2.生成模拟数据的直方图;
    histogram(randomIntegers, 10);
    
    % 3.标签、标题等设置;
    xlabel('分数区间');ylabel('各分数段占据人数');
    title('高州市第一中学2015年高三年级数学考试成绩分布图');
    grid on;
    
    % 4.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_02.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    2

7.2 箱线图
  • 箱线图用于展示数据的分布和离散程度,显示数据的中位数、上下四分位数、异常值、最大值和最小值等信息;

  • 箱线图示例:

    3

    • 上四分位数:亦称第一个四分位数 ( Q 1 ) ({\rm Q1}) (Q1),等于该样本中所有数值从小到大排列后,第 25 % 25\% 25%的数字;
    • 中位数:亦称第二个四分位数 ( Q 2 ) ({\rm Q2}) (Q2),等于该样本中所有数值从小到大排列后,第 50 % 50\% 50%的数字;
    • 下四分位数:亦称第三个四分位数 ( Q 3 ) ({\rm Q3}) (Q3),等于该样本中所有数值从小到大排列后,第 75 % 75\% 75%的数字;
  • 箱线图应用:

    • 查看数据集的分布情况:通过箱线图直观地了解数据的集中趋势、对称性及异常值情况;
    • 比较不同数据集的分布差异:通过绘制多个数据集的箱线图并排比较,比较它们的位置、范围和形状差异;
    • 判断数据集是否满足某种分布:通过箱线图的形状大致判断数据是否符合正态分布或其他分布形状;
  • 箱线图绘制基本步骤:

    % 箱线图绘制基本流程:
    % 1.准备数据:准备一个包含要绘制的数据的向量或矩阵;
    % 2.绘制箱线图:使用boxplot函数创建箱线图;
    data = [data1, data2, data3, ...];
    boxplot(data);
    
    % ch07_03.m
    clear;
    clc;
    
    % 创建箱线图基本示例:
    % 1.创建模拟数据向量;
    data1 = randn(1000, 1);
    data2 = randn(1000, 1) + 1;
    data3 = randn(1000, 1) - 1;
    
    % 2.数据矩阵;
    data = [data1, data2, data3];
    
    % 3.绘制箱线图;
    % 'Labels':设置三个数据组的标签;
    % 'Colors':设置箱线图颜色;
    % 'Symbol':设置离散值的样式,红色圆点('ro');
    boxplot(data, 'Labels', {'Data Group 1', 'Data Group 2', 'Data Group3'},...
            'Colors', ['b', 'g', 'r'], 'Symbol', 'ro');
    
    % 4.设置X、Y轴标签、设置标题;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.0);
    title('箱线图基本示例图');
    xlabel('不同数据组');ylabel('数据值');
    
    % 5.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_04.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    4

7.3 密度图
  • 密度图亦称核密度估计图,用于可视化数据分布的图形,显示连续变量的概率密度分布;

  • 密度图主要应用场景:

    • 显示数据分布形态:密度图能直观地展示数据的分布形式,如:正态分布、偏态分布、多峰分布等;
    • 比较不同数据分布:通过多个密度图的重叠来比较不同数据样本的分布形状;
    • 发现数据集中的模态:密度图可以清楚地显示数据集的单模态、双模态或多模态分布;
    • 查找突出点或异常值:在密度图中观察异常突出的峰值点或偏离主曲线的异常值;
    • 评估拟合效果:通过观察数据分布与理论分布拟合曲线的重合状况来评估拟合效果;
    • 显示离散性变量的连续概率:可以为离散型数据生成密度曲线,将其可视化为连续分布;
  • 密度图绘制过程:

    % ch07_04.m
    clear;
    clc;
    
    % 使用ksdensity函数创建单变量密度图;
    % 1.准备数据;
    data = randn(1000, 1);
    
    figure;
    ksdensity(data);
    
    
    % 2.设置X、Y轴标签、设置标题;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    title('单变量密度图基本示例图');
    xlabel('X轴');ylabel('概率密度');
    
    % 3.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_05.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    5

  • 密度图示例:绘制德国可再生能源发电量密度图。

    % ch07_05.m
    clear;
    clc;
    
    % 1.读取数据内容;
    data = readtable('ch07_05.csv', 'PreserveVariableNames', true);
    
    % 2.选择要创建密度图的数据列;
    windData = data.Wind;
    solarData = data.Solar;
    
    % 3.计算Wind和Solar的核密度估计;
    % f_wind:包含核密度估计的值;
    % xi_wind:包含与这些值对应的数据点的位置;
    [f_wind, xi_wind] = ksdensity(windData);
    [f_solar, xi_solar] = ksdensity(solarData);
    
    % 4.绘制Wind和Solar密度图;
    figure;
    plot(xi_wind, f_wind, 'LineWidth', 2, 'DisplayName', '风力');
    hold on;
    plot(xi_solar, f_solar, 'LineWidth', 2, 'DisplayName', '太阳能');
    
    % 5.标题和标签;
    title('可再生能源发电量密度图');
    xlabel('数据值');
    ylabel('密度');
    legend('Location', 'Best');
    grid on;
    
    % 6.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_06.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    6

7.4 小提琴图
  • 小提琴图结合了箱线图和核密度图,用于可视化数据的分布和密度,帮助分析数据的形状、中位数、四分位数范围及可能的多峰性;

  • 小提琴图和密度图区别:

    • 小提琴图同时展示了数据的密度分布和四分位数信息,密度图只显示分布的形状;
    • 小提琴图通过原始样本直接生成,密度图通过核函数估计得到概率密度曲线;
    • 小提琴图对数据量少的样本也能给出合理估计,密度图需要足够大的样本量;
    • 小提琴图更直观,可以直接看出数据的峰值、偏斜情况,密度图需要一定解析;
    • 密度图可以绘制理论分布与数据的拟合效果,小提琴图侧重展示样本本身分布;
    • 小提琴图更适合互相比较不同数据集,密度图更适合展示单个数据集分布形态;
    • 小提琴图对异常值或离群点更敏感,密度图中异常值或离群点对总体曲线影响较小;
  • 小提琴图绘制基本示例:

    % ch07_06.m
    clear;
    clc;
    
    % 小提琴图基本绘制示例:
    % 1.生成数据;
    data = randn(1000, 10);
     
    % 2.绘制小提琴图;
    violinplot(data);
    
    % 3.标签、标题;
    xlabel('数据组');
    ylabel('数据值');
    title('小提琴图基本示例');
    
    % 4.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_07.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    7

7.5 饼图
  • 饼图用于显示不同类别或部分占整体的比例关系,饼图每个扇形的面积表示相应类别或部分所占比例的大小;

  • 饼图的基本创建过程:

    % ch07_07.m
    clear;
    clc;
    
    % 创建饼图的基本示例:
    % 1.创建数据
    num = [10, 20, 46, 75, 40, 10];
    scoreRange = {'100-120', '90-100', '80-90', '70-80', '60-70', '0-60'};
    
    % 2.绘制饼图
    figure;
    pie(num, scoreRange);
    
    title('机电1154高等数学各分数段人数占比');
    legend(scoreRange, 'Location', 'Best');
    
    % 3.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_08.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    8

    % ch07_08.m
    clear;
    clc;
    
    % 绘制伏羲科技各岗位人数占比;
    % 1.生成数据;
    postNum = [3, 80, 50, 15, 35, 20];
    postName = {'管理岗', '研发岗', '销售岗', '售后岗', '普通岗', '其他岗'};
    
    % 2.绘制饼图;
    figure(1);
    pie(postNum, postName);
    
    % 3.添加标题、图例;
    legend(postName, 'Location', 'Best');
    title('伏羲科技各岗位人数占比');
    
    % 4.保存高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch07_09.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置,以及报警配置,支持双路报警。 1、STM32G474RE的RTC晶振引脚: OSC32_IN为PC14,OSC32_OUT为PC15; 2、Vbat引脚 Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“…

9.11 QT ( Day 4)

一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

Redis——通用命令

目录 Redis通用命令Redis中最核心的两个命令getset Redis全局命令keys语法注意事项 existsdel(delete)expirettlredis的key的过期策略是怎么实现的&#xff1f;**了解拓展** type总结 Redis通用命令 Redis的命令非常非常多&#xff0c;所以 1. 掌握常用命令&#xff08;多操作…

ardunio超声波测距实验

工作原理 模块有2个超声波换能器&#xff08;如图所示&#xff09;&#xff0c;一个发出声波&#xff0c;另一个接收物体反射回来的声波&#xff0c;这中间所经过的时间即声波传播的时间&#xff0c;再结合声速就能计算出&#xff1a; 距离 声速 * 时间 2 如何使用HC-SR04模块…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲&#xff0c;在演讲中Larry将AI技术和云战略推到了前所未有的高度&#xff0c;从新的Oracle 23c改名到Oracle23ai&#xff0c;到Oracl…

unity3d入门教程一

unity3d入门教程一 2.1-开发环境2.2 新建项目3.1编辑器页面3.2场景3.3添加资源4.1场景视图4.2游戏对象4.3坐标系4.4游戏对象的操作4.5摄像机 2.1-开发环境 https://unity.com/ https://unity.cn/ 安装时若卡住&#xff0c;打开路径自动安装 C:\Users\zhaocai\AppData\Local\T…

信息安全国内外现状及技术要求示例(R155/R156)

国际政策、 法规的现状与趋势 鉴于对交通安全、社会安全甚至国家安全的重要影响&#xff0c;汽车网络安全、数据安全得到各相关国家和地区的高度重视&#xff0c;纷纷出台相关法规、标准。 信息安全法规 R155 法规适用范围覆盖了乘用车及商用车&#xff0c;适用于 M 类、N 类…

北斗盒子:海上安全的智能守护者——落水报警应用案例

海上环境多变&#xff0c;无论是航行还是作业活动&#xff0c;安全始终是最重要的考量。近年来&#xff0c;我国大力发展海上经济&#xff0c;海上作业的增加也带来了溺水事故的频发&#xff0c;给家庭和社会带来沉重的伤痛。据世界卫生组织统计&#xff0c;溺水是世界各地非故…

SQL(结构性查询语句)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、SQL是什么&#xff1f;二、DDL三、DML四、DQL五、DCL总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、SQL是什么&#xff…

【R语言】删除数据框中所有行中没有大于200的数值的行

在Perl中还需要循环按行读入文件&#xff0c;而在R中&#xff0c;一行代码解决问题&#xff1a; df <- df[apply(df, 1, function(x) any(x > 200)), ]这是一个使用apply函数对数据框df进行操作的表达式。apply函数用于对数据框、矩阵或数组进行元素级别的操作。 df&am…

虚拟机安装教程

做一期详细的虚拟机安装教程 VM16.12版本下载地址&#xff1a;联想乐云 VM16版本许可证&#xff1a;ZF3R0-FHED2-M80TY-8QYGC-NPKYF 第一步双击打开安装包&#xff1a; 选择安装位置&#xff0c;选择空间充足的磁盘&#xff0c;一般不建议直接装c 取消勾选 等待安装 输入许可…

sqli-labs靶场自动化利用工具——第6关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生&#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢&#xff1f;可能有些人会说不是有sqlmap&#…

中信银行信用卡中心社招:TAS人才测评系统题库及通关攻略更新了!

中信银行信用卡中心&#xff08;以下简称“卡中心”&#xff09;是中信银行在深圳设立的对信用卡业务进行统一管理、集中操作、独立核算的专营机构。2002年底&#xff0c;由中信银行总行与中信嘉华银行在深圳合作筹建成立&#xff1b;卡中心自成立伊始&#xff0c;始终坚持“以…

Windows系统一键启动Redis脚本

Redis 是一个开源的、高性能的键值存储数据库&#xff0c;广泛应用于缓存、数据分析、消息队列等场景。无论是在开发环境还是生产环境中&#xff0c;快速启动 Redis 服务都是非常重要的。为此&#xff0c;本文将介绍如何在 Windows 系统中创建一键启动 Redis 的脚本&#xff0c…

网络安全 L2 Introduction to Cryptography 密码学

Definitions 1. crypto - hidden/secret grafia - writing 2. “the science and study of secret writing” 3. Cryptography is the science of protecting data, which provides means of converting data into unreadable form, so that 1. the data cannot be ac…

make 程序规定的 makefile 文件的书写语法(2)

&#xff08;13&#xff09;接着开始一个更复杂的例子&#xff0c;课程的素材 2 &#xff0c;先给出书写 makefile 的框架 &#xff1a; &#xff08;14&#xff09; &#xff08;15&#xff09; 谢谢

0x07 Nginx越界读取缓存漏洞 CVE-2017-7529 复现

参考&#xff1a; Nginx越界读取缓存漏洞 CVE-2017-7529 | PeiQi文库 (wgpsec.org)Nginx越界读取缓存漏洞&#xff08;CVE-2017-7529&#xff09;复现分析 - qweg_focus - 博客园 (cnblogs.com) 一、fofa 搜索 nginx && port"80" 我这里写了个脚本将ip保存…

el-form之表单校验自动定位到报错位置问题,,提升用户体验

需求描述 由于需要填写的表单项太多&#xff0c;提交的时候校验不通过&#xff0c;如果没填写的表单项在最上面&#xff0c;用户看不到不知道发生了啥&#xff0c;所以需要将页面滚动定位到第一个报错的表单项位置&#xff0c;提升用户体验 实现步骤 点击保存校验 报错项class会…

opencv 之 实战项目 识别银行卡上的数字

OpenCV 之 实战项目&#xff1a;识别银行卡上的数字 引言 在日常生活中&#xff0c;银行卡的识别是一个常见的需求&#xff0c;特别是在金融领域。本实战项目旨在使用 OpenCV 库来识别银行卡上的数字。我们将通过模板匹配的方法&#xff0c;结合图像处理技术&#xff0c;来准…

【网络安全】基础知识详解(非常详细)零基础入门到精通

一、什么是网络安全&#xff1f; 百度上对“网络安全”是这么介绍的&#xff1a; “网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行&#xff0c;网络服务不中断。” 嗯…是不…