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

    1

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

    2

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

    3

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

    4

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:numDataPoints
        parallelcoords(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)]);
    

    5

9.6 散点图矩阵
  • 散点图矩阵用于同时展示多个变量之间的关系,通常用于多维数据集的探索性数据分析,分析变量之间的相关性、分布和趋势;

  • 散点图矩阵通过在一个矩阵中绘制多个散点图实现,在矩阵中的每个小格子里,显示两个不同变量之间的散点图;

  • 常见的散点图矩阵应用场景:

    • 探索数据集:帮助研究者快速了解数据集中多个变量之间的关系;
    • 发现相关性:通过散点图可以确定是否存在线性或非线性相关性,或是否存在群集或聚类;
    • 检测异常值:异常值在散点图中是离群点,容易被发现;
    • 了解分布:通过散点图了解每个变量的分布情况;
    • 数据预处理:建模前,散点图矩阵帮助确定哪些变量之间存在共线性,或哪些变量可能需要进行数据转换或归一化;
  • 绘制散点图矩阵基本示例:

    % ch09_06.m
    clear;
    clc;
    
    % 1.生成随机数据;
    data = randn(300, 5);
    
    % 2.绘制散点图矩阵;
    figure;
    
    for i = 1:5
        for j = 1:5
            subplot(5, 5, (i - 1) * 5 + j);
            if i == j
                histogram(data(:, i));
            else
                scatter(data(:, i), data(:, j), '.');
            end
        end
    end
    
    % 3.生成高质量图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch09_06.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    6

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

双端搭建个人博客

1. 准备工作 确保你的两个虚拟机都安装了以下软件: 虚拟机1(Web服务器): Apache2, PHP虚拟机2(数据库服务器): MariaDB2. 安装步骤 虚拟机1(Web服务器) 安装Apache2和PHP 更新系统包列表: sudo apt update安装Apache2: sudo apt install apache2 -y安装PHP及其Apac…

只写CURD后台管理的Java后端要如何提升自己

你是否工作3~5年后,发现日常只做了CURD的简单代码。 你是否每次面试就会头疼,自己写的代码,除了日常CURD简历上毫无亮点可写 抱怨过苦恼过也后悔过,但是站在现在的时间点回想以前,发现有很多事情我们是可以做的更好的。…

Spring之生成Bean

Bean的生命周期:实例化->属性填充->初始化->销毁 核心入口方法:finishBeanFactoryInitialization-->preInstantiateSingletons DefaultListableBeanFactory#preInstantiateSingletons用于实例化非懒加载的bean。 1.preInstantiateSinglet…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-26

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-26 1. LLMs Still Can’t Plan; Can LRMs? A Preliminary Evaluation of OpenAI’s o1 on PlanBench Authors: Karthik Valmeekam, Kaya Stechly, Subbarao Kambhampati LLMs仍然无法规划;LRMs可以…

Mybatis的基本使用

什么是Mybatis? Mybatis是一个简化JDBC的持久层框架,MyBatis是一个半自动化框架,是因为它在SQL执行过程中只提供了基本的SQL执行功能,而没有像Hibernate那样将所有的ORM操作都自动化了。在MyBatis中,需要手动编写SQL语…

【Android】布局优化—include,merge,ViewStub的使用方法

引言 1.重要性 在Android应用开发中,布局是用户界面的基础。一个高效的布局不仅能提升用户体验,还能显著改善应用的性能。随着应用功能的复杂性增加,布局的优化变得尤为重要。优化布局能够减少渲染时间,提高响应速度&#xff0c…

Docker安装consul + go使用consul + consul知识

1. 什么是服务注册和发现 假如这个产品已经在线上运行,有一天运营想搞一场促销活动,那么我们相对应的【用户服务】可能就要新开启三个微服务实例来支撑这场促销活动。而与此同时,作为苦逼程序员的你就只有手动去 API gateway 中添加新增的这…

探索分布式IO模块的介质冗余:赋能工业自动化的稳健之心

在日新月异的工业自动化领域,每一个细微环节的稳定性都直接关系到生产线的效率与安全。随着智能制造的深入发展,分布式IO(Input/Output)模块作为连接现场设备与控制系统的关键桥梁,其重要性日益凸显。我们自主研发的带…

五子棋双人对战项目(3)——匹配模块

一、分析需求 二、约定前后端接口 三、实现游戏大厅页面(前端代码) 四、实现后端代码 五、线程安全问题 六、忙等问题 一、分析需求 需求:多个玩家,在游戏大厅进行匹配,系统会把实力相近的玩家匹配到一起。 要想实…

Redis 简单的消息队列

使用redis 进行简单的队列很容易,不需要使用较为复杂的MQ队列,直接使用redis 进行,不过唯一不足的需要自己构造生产者消费者,这里使用while True的方法进行消费者操作 目录 介绍数据类型StringHash 重要命令消息队列 介绍 key-v…

钉钉H5微应用Springboot+Vue开发分享

文章目录 说明技术路线注意操作步骤思路图 一、创建钉钉应用二、创建java项目三、创建vue项目(或uniapp项目),npm引入sdk的依赖四、拥有公网域名端口。开发环境可以使用(贝锐花生壳等工具)五、打开钉钉开发者平台&…

Selenium与数据库结合:数据爬取与存储的技术实践

目录 一、Selenium与数据库结合的基础概念 1.1 Selenium简介 1.2 数据库简介 1.3 Selenium与数据库结合的优势 二、Selenium爬取数据的基本步骤 2.1 环境准备 2.2 编写爬虫代码 2.3 数据提取 2.4 异常处理 三、数据存储到数据库 3.1 数据库连接 3.2 数据存储 3.3 …

软件设计师——计算机网络

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:🌟其他专栏🌟:C语言_秋邱 一、OSI/ RM七层模型(⭐⭐⭐) ​ 层次 名称 主要功…

docker下载mysql时出现Unable to pull mysql:latest (HTTP code 500) server error 问题

报错 Unable to pull mysql:latest (HTTP code 500) server error - Get “https://registry-1.docker.io/v2/”: EOF 解决方法 将VPN开到Global模式 解决啦

Could not retrieve https://npm.taobao.org/mirrors/node/index.json. 报错解决

Could not retrieve https://npm.taobao.org/mirrors/node/index.json. 报错解决 1.问题原因及解约 今天使用nvm下载不同版本的nodejs的时候报错了 C:\Users\1> nvm list availableCould not retrieve https://npm.taobao.org/mirrors/node/index.json.提示无法检索地址&…

Oracle控制文件全部丢失如何使用RMAN智能恢复?

1.手动删除所有控制文件模拟故障产生 2.此时启动数据库发现控制文件丢失 3.登录rman 4.列出故障 list failure; 5.让RMAN列举恢复建议 advise failure; 6.使用RMAN智能修复 repair failure;

基于Springboot+Vue的基于协同过滤算法的个性化音乐推荐系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

Ubuntu Server 20.04 64bit定时备份MySQL8.0.36数据库数据

一、编写sh脚本 常见备份命令介绍 我选用的是mysqldump命令,命令使用简介 [root]> mysqldump -helpUsage: mysqldump [OPTIONS] database_name [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all…

足球青训俱乐部管理:Spring Boot技术驱动

摘 要 随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率…

VMware Aria Automation Orchestrator 8.18 发布,新增功能概览

VMware Aria Automation Orchestrator 8.18 - 现代工作流程自动化平台 请访问原文链接:https://sysin.org/blog/vmware-aria-automation-orchestrator/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 现代工作流程…