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

MATLAB绘制堆叠填充图--巧用句柄

MATLAB绘制堆叠填充图–巧用句柄

目录

  • MATLAB绘制堆叠填充图--巧用句柄
  • 1. 主要原理讲解
    • 1.1 主要函数
    • 1.2 句柄原理
  • 2. 绘图示例
    • 2.1 准备数据
    • 2.2 绘制堆叠填充图-使用句柄控制图形属性
    • 2.3 设置填充颜色和样式
    • 2.4 添加标题和标签
    • 2.5 绘图效果
  • 3. 结语

堆叠填充图是一种常见的数据可视化方式,用于展示多组数据在不同类别上的累积贡献。这次将介绍如何使用MATLAB绘制堆叠填充图,特别是使用句柄来实现更灵活的绘图操作。文中包含详细的案例、代码说明以及注意事项哦。

1. 主要原理讲解

1.1 主要函数

主要使用 MATLAB 中的 area 函数来绘制堆叠填充图,并通过句柄控制图形的样式和属性

  • area 函数: 该函数用于绘制堆叠填充图。它的基本语法是 area(x, y),其中 x 是 x 轴的值,y 是一个矩阵,每一行代表一个类别的 y 轴的值。在堆叠填充图中,可以传递多个 y 值,它们会自动堆叠在一起。

  • 句柄属性设置: 使用句柄对象来控制图形的样式和属性。例如,可以使用句柄对象 h 来设置填充颜色和透明度,通过 h.FaceColorh.FaceAlpha 属性来分别设置填充颜色和透明度。

1.2 句柄原理

在MATLAB中,句柄(handle)是指对图形对象或其他MATLAB对象的引用。使用句柄可以在代码中对这些对象进行操作和控制。在绘图中,可通过对图形对象的句柄进行操作,来改变图形的样式、属性和行为。句柄的主要作用包括:

  1. 对象控制:通过句柄可以对图形对象进行控制,例如改变其颜色、线型、标签等。

  2. 动态修改:使用句柄可以动态修改图形对象的属性,而不需要重新绘制图形,这对于交互式数据可视化和动态图形更新非常有用。

  3. 对象传递:句柄可以作为参数传递给函数,从而实现函数间的数据共享和信息传递。

2. 绘图示例

2.1 准备数据

首先,准备需要绘制的堆叠填充图所需的数据。每组数据代表一个类别,每行数据表示该类别在不同时间点或其他维度上的取值。(其他的数据大家可以根据自己的绘图需求进行调整,基本逻辑是一样的)

易错点:确保数据维度一致,每组数据的数量相同。
重点内容:合理组织数据,以便在堆叠填充图中清晰展示各个类别的累积贡献。

% 准备数据
x = 1:10; % 时间或其他维度
data1 = rand(1, 10); % 数据1
data2 = rand(1, 10); % 数据2
data3 = rand(1, 10); % 数据3

2.2 绘制堆叠填充图-使用句柄控制图形属性

使用MATLAB的area函数绘制堆叠填充图,使用句柄,方便控制图形的样式和属性。

注意:代码中刚开始的图形参数设置是为了方便控制图形的常用基本参数,代码是通用的,具体可参考博主其他博文或资源
博文:如何合理布局子图–确定MATLAB的subplot子图位置参数
资源:数据可视化-绘图技巧-MATLAB-subplot位置分布确定函数

易错点:在叠加多组数据时,需要注意数据的顺序,以确保堆叠填充图的正确显示。
重点内容:选择合适的填充颜色和透明度,使得图形看起来清晰美观。

% 给定图形参数   
% 注:图形参数设置是为了方便控制图形的常用基本参数,代码是通用的,具体可参考博主其他博文或资源
% 博文:https://blog.csdn.net/weixin_43323302/article/details/136383424?spm=1001.2014.3001.5501
% 资源:https://download.csdn.net/download/weixin_43323302/88909564?spm=1001.2014.3001.5501
N = 1; % 子图行数
M = 1; % 子图列数
subplot_length = 4; % 子图高度 (比例2:3,3:4,9:16 等)
subplot_width = 6; % 子图宽度
top_margin = 0.4; % 上边界间距
bottom_margin = 0.6; % 下边界间距
left_margin = 0.6; % 左边界间距
right_margin = 0.4; % 右边界间距
gap = 0.8; % 子图间隙
[subplot_position,figure_width,figure_length]=subplot_params(N,M,subplot_length,subplot_width,top_margin,bottom_margin,left_margin,right_margin,gap);
fontname='songti';
fontsize=12;
labelmultiplier=1.3;
titlemultiplier=1.4;
pos=subplot_position;% 绘制堆叠填充图
f1=figure('Units', 'inches','Position', [0, 0, figure_width, figure_length]);  % 一定要说明单位
set(f1,'name','堆叠填充图');
h = area(x, [data1; data2; data3]');
hold on;

2.3 设置填充颜色和样式

使用句柄函数,根据需要为每组数据设置不同的线型、填充颜色,并调整填充区域的透明度,以实现堆叠填充图的美观效果。

易错点:颜色搭配需要考虑到对比度和可读性,透明度的设置要适中,既能显示出堆叠效果,又不会影响数据的辨识度。
重点内容:可以使用MATLAB内置的颜色映射或自定义填充颜色,同时通过调整颜色的透明度来控制图形的层次感和美观度。

% 设置填充颜色和透明度
h(1).LineStyle = '-';  % 数据1的线型
h(2).LineStyle = '-.'; % 数据2的线型
h(3).LineStyle = ':';  % 数据3的线型
h(1).FaceColor = [0.2, 0.6, 0.9]; % 数据1的填充颜色
h(2).FaceColor = [0.9, 0.5, 0.2]; % 数据2的填充颜色
h(3).FaceColor = [0.5, 0.8, 0.2]; % 数据3的填充颜色
h(1).FaceAlpha = 0.3; % 数据1的填充透明度
h(2).FaceAlpha = 0.5; % 数据2的填充透明度
h(3).FaceAlpha = 0.7; % 数据3的填充透明度

2.4 添加标题和标签

最后,添加图的标题、坐标轴标签和图例。

易错点:标题和标签的文字要简明扼要,图例的位置要避免遮挡数据。
重点内容:通过设置字体大小、加粗、颜色等属性,增强图形的可读性和美观度。

% 添加标题和标签
title('堆叠填充图');
xlim([1,10]);
xlabel('时间');
ylabel('数值');
legend({'A','B','C'}, 'Location', 'best','FontSize',fontsize); % 设置legend
set(gca,'FontName',fontname,'FontSize',fontsize,'LabelFontSizeMultiplier',labelmultiplier,'TitleFontSizeMultiplier',titlemultiplier);

2.5 绘图效果

在这里插入图片描述

3. 结语

通过以上步骤,能够高效地使用MATLAB绘制带有堆叠填充效果的图形,并通过句柄方便清晰地控制图形的样式和属性。这个方法可以有效展示多组数据在不同类别上的累积贡献。当然本文仅仅选取了一个经典示例,大家可以根据自己的需求合理调整。

相关文章:

MATLAB绘制堆叠填充图--巧用句柄

MATLAB绘制堆叠填充图–巧用句柄 目录 MATLAB绘制堆叠填充图--巧用句柄1. 主要原理讲解1.1 主要函数1.2 句柄原理 2. 绘图示例2.1 准备数据2.2 绘制堆叠填充图-使用句柄控制图形属性2.3 设置填充颜色和样式2.4 添加标题和标签2.5 绘图效果 3. 结语 堆叠填充图是一种常见的数据可…...

JQuery的定义

jQuery是一个js库,使用jQuery会比js简单一点 jQuery文件是一个自执行函数 jQuery文件是一个自执行函数 $传递的参数不同,效果也不同: 传递的是匿名函数,那$就是一个入口函数,传递的是一个字符串,那$就…...

【操作系统】FCFS、SJF、HRRN、RR、EDF、LLF调度算法及python实现代码

文章目录 一、先来先服务调度算法(FCFS) 二、短作业优先调度算法(SJF) 三、高响应比优先调度算法(HRRN) 四、轮转调度算法(RR) 五、最早截至时间优先算法(EDF&#…...

Image-Adaptive YOLO for Object Detection in Adverse Weather Conditions(IA-YOLO)

1、总体概述 基于深度学习的目标检测在常规条件的数据集可以获得不错的结果,但是在环境、场景、天气、照度、雾霾等自然条件的综合干扰下,深度学习模型的适应程度变低,检测结果也随之下降,因此研究在复杂气象条件下的目标检测方法…...

Mac电脑Jmeter集成到Jenkins,压测多个接口并生成测试报告

Jenkins支持的JDK版本17、21,通过java -version查看当前JDK版本,确认是否匹配 打开网址https://www.jenkins.io/download 点击下载,选择mac版本 commend空格打开终端,输入安装命令brew install jenkins 安装完成后输入brew servi…...

redis-Hash

一,应用场景 Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Set就是一种简化的Hash,只变动key,而value使用默认值填充。 可以将一个Hash表作为一个对象进行存储,表中存放对象的信息。 二,命令 H…...

Kubernetes kafka系列 | Strimzi 部署kafka-bridge

Strimzi kafka集群部署直通车 一、kafka bridge 介绍 Kafka Bridge 是 Apache Kafka 生态系统中的一个工具或组件,用于实现 Kafka 与其他系统或协议之间的通信或集成。Kafka 本身是一个分布式事件流平台,广泛用于构建实时数据流水线和流式应用程序。然而…...

AR和VR如何改变客户体验?

How AR and VR are transforming customer experiences? How AR and VR are transforming customer experiences AR和VR如何改变客户体验 AR and VR technology was largely expedited by the past pandemic with at least 93.3 million and 58.9 million users r…...

微信小程序中实现埋点的方法

在小程序开发过程中,埋点是实现数据采集和用户行为分析的重要手段。通过埋点,我们可以获取用户在使用小程序时的各种操作信息,从而更好地了解用户行为特征,优化产品体验。下面将介绍如何在小程序中实现埋点,并通过代码示例进行说明。 一、埋点实现思路 小程序的埋点实现主要依…...

vue记事本渲染以及交互

以下是记事本的源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>记事本</title><styl…...

Zookeeper中的脑裂

简单点来说&#xff0c;脑裂(Split-Brain) 就是比如当你的 cluster 里面有两个节点&#xff0c;它们都知道在这个cluster 里需要选举出一个 master。那么当它们两个之间的通信完全没有问题的时候&#xff0c;就会达成共识&#xff0c;选出其中一个作为 master。但是如果它们之间…...

【漏洞复现】金和OA XmlDeal.aspx XXE漏洞

0x01 产品简介 金和数字化智能办公平台(简称JC6)是一款结合了人工智能技术的数字化办公平台,为企业带来了智能化的办公体验和全面的数字化转型支持。同时符合国家信创认证标准,支持组织数字化转型,实现业务流程的数字化、智能化和协同化,提高企业竞争力。 0x02 漏洞概述…...

对比:React 还是 Vue

自己之前的开发栈一直是 Vue&#xff0c;对 Vue 的设计理念及底层实现原理算是颇有了解&#xff1b;随着公司技术迭代&#xff0c;近半年来开始接触&使用 React。 前面写了几篇关于 React 的文章&#xff0c;但大部分都是知识点以及开发过程问题的沉淀总结。 这篇文章想尝…...

ubuntu 20.04 SD 卡分区类型 msdos 改为 GPT 的方法

前言 默认 SD 卡分区是 FAT32 格式&#xff0c;为了用于嵌入式Linux ext4 文件系统&#xff0c;需要改为 ext4 文件系统&#xff0c;但是SD 卡分区类型默认是 msdos 类型&#xff0c;也就是 MBR 类型&#xff0c;不是 GPT 类型。 烧写 ext4 分区表&#xff0c;或者使用 ubuntu…...

Kubernetes(K8s)技术解析

1. K8s简介 Kubernetes&#xff08;简称K8s&#xff09;是一个开源的容器编排平台&#xff0c;旨在简化容器化应用程序的部署、扩展和管理。为开发者和运维人员提供了丰富的功能和灵活的解决方案&#xff0c;帮助他们更轻松地构建、部署和管理云原生应用程序。以下是关于Kubern…...

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果 一、简单介绍 二、简单颜色反转效果实现原理 三、简单颜色反转效果案例实现简单步骤 四、注…...

【ELK+Kafka+filebeat分布式日志收集】部署filebeat和Kibana(三)

filebeat下载 官网:https://www.elastic.co/cn/downloads/beats/filebeat 或者 cd /opt wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.1-linux-x86_64.tar.gz依次执行如下命令...

二.音视频编辑-媒体组合-播放

引言 当涉及到音视频编辑时&#xff0c;媒体资源的提取和组合是至关重要的环节。在iOS平台上&#xff0c;AVFoundation框架提供了丰富而强大的功能&#xff0c;使得媒体资源的操作变得轻松而高效。从原始的媒体中提取片段&#xff0c;然后将它们巧妙地组合成一个完整的作品&am…...

前端安全-面试题(2024)

1. 面试总结话术: 前端常见的安全问题主要包括以下几种: 跨站脚本攻击(XSS):攻击者通过在目标网站注入恶意脚本,当用户访问网站时,恶意脚本会被执行,从而窃取用户信息或进行其他恶意操作。这种攻击通常利用表单提交、URL参数等方式注入脚本。存储型 xss 恶意代码存在数…...

CVE-2022-29405 Apache Archiva任意用户密码重置漏洞分析

Apache Archiva是一套可扩展的Artifact Repository管理系统。它能够与Maven&#xff0c;Continuum和ANT等构建工具完美结合。Archiva提供的功能包括&#xff1a;远程Repository代理&#xff0c;基于角色的安全访问管理&#xff0c;Artifact分发、维护、查询&#xff0c;生成使用…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...