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

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

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

相关文章

Mac反编译APK

文章目录 第一种方式: brew installapktool 使用说明dex2jar 使用说明 第二种方式: 下载安装包apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)dex2jar 使用说明 安装 JD-GUI 查看jar包中的class文件JD-GUI 使用说明 第一种方式: brew install 安装过程可能很…

Phpstorm配置Xdebug

步骤 1、先去官网找到对应的php xdebug的版本 2、配置phpstorm断点调试 网址:https://xdebug.org/ 查看php对应的xdebug版本:Xdebug: Support — Tailored Installation Instructions 1.1查看对应php xdebug版本 全选,复制到目标网址 我…

微软detours代码借鉴点备注

comeasy 借鉴点1 Loadlibray的时间选择 注入库wrotei.dll,为了获取istream的接口,需要loadlibrary,但是在dllmain中是不建议这样做的。因此,动态库在dllmain的时候直接挂载了comeasy.exe的入口 //获取入口 TrueEntryPoint (i…

【吊打面试官系列】Redis篇 - 使用过 Redis 分布式锁么,它是什么回事?

大家好,我是锋哥。今天分享关于 【使用过 Redis 分布式锁么,它是什么回事?】面试题,希望对大家有帮助; 使用过 Redis 分布式锁么,它是什么回事? 先拿 setnx 来争抢锁,抢到之后&#…

物联网实战--入门篇之(八)嵌入式-空气净化器

目录 一、风扇调速 二、通讯协议 三、净化器运行逻辑 一、风扇调速 单片机是不能直接驱动电机的,因为主芯片的驱动电流比较小(50mA左右),他们之间正常还要有个电机驱动器,常用的有TB6612、L298和L9110等,目前项目用的这个电机它…

【软件测试】测试常见知识点汇总

测试常见知识点汇总 一、什么是测试1.1 测试和调试的区别1.2 什么是需求1.2.1 用户需求1.2.2 软件需求 1.3 测试用例要素1.4 软件的生命周期及各阶段概述1.5 开发模型和测试模型(记住特点和适用场景)1.5.1 开发模型1.5.1.1 瀑布模型(自上而下…

SWM341系列应用(上位机应用)

SWM341系列之上位机应用 1、分级图像和PNG、JPG的应用 现象:客户使用SWM34SVET6HMI_0.4.1版本上位机进行UI界面布局,反馈在模拟运行时(PC端)流畅,在Demo平台(设备端)运行卡顿。 分析及解决&…

ids工业相机与电控位移台同步控制及数据采集

通过VS2017和OpenCV,实现ids工业相机与电控位移台同步控制及数据采集 目录项目环境配置代码流程及思路项目架构项目开发运行效果开发关键ids相机配置位移台环境配置相机头文件相机参数设置保存图像函数设置电控位移台头文件电控位移台设置参数最后就是通过main函数进…

Collection与数据结构 链表与LinkedList(三):链表精选OJ例题(下)

1. 分割链表 OJ链接 class Solution {public ListNode partition(ListNode head, int x) {if(head null){return null;//空链表的情况}ListNode cur head;ListNode formerhead null;ListNode formerend null;ListNode latterhead null;ListNode latterend null;//定义…

计算机网络-HTTP相关知识-RSA和ECDHE及优化

HTTPS建立基本流程 客户端向服务器索要并验证服务器的公钥。通过密钥交换算法(如RSA或ECDHE)协商会话秘钥,这个过程被称为“握手”。双方采用会话秘钥进行加密通信。 RSA流程 RSA流程包括四次握手: 第一次握手:客户…

Python可视化之Matplotlib

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1、解决坐标轴刻度负号乱码2、解决中文乱码问题3、图形展现形式 一、图形绘制1.折线图plot2.散点图plot&scatter3.柱状图plt.bar&条形图plt.barh4.直方…

探索设计模式的魅力:简单工厂模式

个人主页: danci_ 🔥系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:探索设计模式的魅力:简单工厂模式 简单工厂模式&#x…

Prometheus+grafana环境搭建MongoDB(docker+二进制两种方式安装)(五)

由于所有组件写一篇幅过长,所以每个组件分一篇方便查看,前四篇mongodb的exporter坑也挺多总结一下各种安装方式,方便后续考古。 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabb…

Redis面试题28道

1、什么是类加载器,类加载器有哪些? 1、什么是类加载器? 类加载器负责加载所有的类,其为所有被载入内存的类生成一个 java.lang.Class 实例对象。 2、类加载器有哪些? JVM 有三种类加载器: &#xff08…

软考--软件设计师(软件工程总结2)

目录 1.测试方法 2.软件项目管理 3.软件容错技术 4.软件复杂性度量 5.结构化分析方法(一种面向数据流的开发方法) 6.数据流图 1.测试方法 软件测试:静态测试(被测程序采用人工检测,计算机辅助静态分析的手段&…

GraphSage

背景 大型图中节点的低维嵌入在各种预测任务中非常有用。GraphSage是一种通用的归纳框架,它利用节点特征信息(例如,文本属性)有效地为以前看不见的数据生成节点嵌入。相比于对每个节点训练单独的嵌入,GraphSage学习了一…

Hyper-v平台搭建pve系统之网络配置(双网卡、内外网分离)

现在我需要在我本地配置的PVE系统上配置双网卡,然后一个连接外部网络(访问互联网),一个连接内部网络(只能和宿主机之间互相访问) 最终效果: 登录PVE平台,我可以正常访问外网&#…

用html写一个爱心

<!DOCTYPE html> <html lang"zh-CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><title>爱您</title><style>* {padding: 0;margin: 0;}body {background-color: pin…

铁山靠之数学建模-基础篇

小黑子的数模基础篇 一、什么是数学建模1.1 数学模型分类1.2 备战准备什么1.3 组队学习路线1.4 赛前准备1.5 赛题选择1.5.1 赛题类型1.5.2 ABC赛题建议 1.6 学会查询1.6.1 百度搜索技巧1.6.2 查文献1.6.3 数据预处理 1.7 建模全过程 二、数模论文2.1 论文排版2.2 标题怎么写2.3…

前端学习之BOM编程-window对象、history对象、navigator对象、location对象

window对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>widnow对象</title><style>div{width: 2000px;height: 4000px;background-image: linear-gradient(to bottom right,red,blue…