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.FaceColor
和h.FaceAlpha
属性来分别设置填充颜色和透明度。
1.2 句柄原理
在MATLAB中,句柄(handle)是指对图形对象或其他MATLAB对象的引用。使用句柄可以在代码中对这些对象进行操作和控制。在绘图中,可通过对图形对象的句柄进行操作,来改变图形的样式、属性和行为。句柄的主要作用包括:
-
对象控制:通过句柄可以对图形对象进行控制,例如改变其颜色、线型、标签等。
-
动态修改:使用句柄可以动态修改图形对象的属性,而不需要重新绘制图形,这对于交互式数据可视化和动态图形更新非常有用。
-
对象传递:句柄可以作为参数传递给函数,从而实现函数间的数据共享和信息传递。
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绘制带有堆叠填充效果的图形,并通过句柄方便清晰地控制图形的样式和属性。这个方法可以有效展示多组数据在不同类别上的累积贡献。当然本文仅仅选取了一个经典示例,大家可以根据自己的需求合理调整。