堆叠环形柱状图(Stacked Donut Chart)是数据可视化中的一种复合图表,结合了堆叠柱状图和环形图的特点,主要用于展示 多类别数据的构成比例及其层级关系。
核心作用
-
展示多层级的占比关系
-
环形结构可直观显示整体与部分的关系(类似饼图),而堆叠设计允许在每一层环形中进一步细分数据,适合展示 多维度 的构成比例(如大类下的子类占比)。
-
-
对比不同组别的构成差异
-
通过多个同心环或并排的环形柱,可以对比不同组别(如不同时间段、地区)下各成分的分布情况。
-
-
节省空间且美观
-
环形中空的设计比传统堆叠柱状图更紧凑,适合在有限空间内展示复杂数据,同时视觉上更具吸引力。
-
图形展示
绘制堆叠环形柱状图的方法
在MATLAB中绘制堆叠环形柱状图需要结合极坐标和柱状图的堆叠特性。以下是具体实现方法:
准备数据
假设有5组数据需要堆叠:可利用randi()函数生成模拟数据。
rng(6) % 设置随机种子
data = randi([1,50], [6,5]);
定义标签
通过定义不同组别数据的标签和层级关系的标签来观察占比。
Name1 = compose('Monkey-%d', 1:6); % 标签1
Name2 = compose('human-%d', 1:5); % 标签2
配色
通过RGB来对不同层级关系的比例进行配色。
colors = [141, 211, 199
255, 255, 179
190, 186, 218
251, 128, 114
128, 177, 211]/255;
绘制堆叠柱状图
省略------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
由于作品是其他朋友共同创作的,对此,对于该部分代码本文章虽然不会采取收费形式,但是需要完整代码的朋友们需要关注该账号来获取,本账号开通没多久,希望各位粉丝大力支持,在未来博主会发布更多优质的代码资料供各位粉丝参考,如果有哪里不对的地方希望各位粉丝多多支持,我们会吸取经验,让未来的作品越来越好。
绘制图例和数据标签
% 绘制数据名称
for i = 1:N
text(ax, 0, N + N/2 + 1 - i, [Name1{i},' '], 'FontName','Times New Roman',...
'FontSize',16, 'HorizontalAlignment','right');
end
% 绘制图例
legend(lgdHdl, Name2, 'FontName','Times New Roman',...
'FontSize',16, 'Box','off', 'Location','best',...
'Position',[.22, .93 - .04*(size(data, 2) - 1), .1, .04*(size(data, 2) - 1)]);
替代方案
对于更复杂的环形堆叠柱状图,可以考虑:
% 使用patch函数手动绘制环形柱
% 计算内外半径
inner_radius = 0.5;
outer_radius = inner_radius + data1/total;
patch_handles = gobjects(size(data1));
for i = 1:length(data1)
theta = linspace(angles(i), angles(i)+2*pi/length(data1), 50);
r = [ones(size(theta))*inner_radius, ones(size(theta))*outer_radius(i)];
theta = [theta, fliplr(theta)];
patch_handles(i) = patch(pax, theta, r, [0.2 0.6 0.8]);
end
典型应用场景
-
市场份额分析
例如:外环显示各品牌的市场份额,内环细分每个品牌下不同产品的销售占比。 -
资源分配统计
比如展示公司各部门的预算分配,内环为部门总预算,外环细分各项目的费用。 -
用户行为研究
分析用户在不同渠道(外环)的点击量,并堆叠展示各渠道内用户年龄层(内环)的分布。 -
时间趋势对比
用多层环形表示不同季度/年度的数据,每层环的堆叠部分展示该时间段内的成分变化。
优缺点
-
优点:
-
适合展示层次化数据(整体→部分→子部分)。
-
比普通饼图/环图承载更多信息。
-
-
缺点:
-
数据量过大时易显得杂乱,需谨慎设计颜色和标签。
-
精确对比细微差异较困难(尤其是靠近中心的环)。
-
示例工具
可通过 Excel、Tableau、Power BI 或 Python(Matplotlib/Plotly)等工具制作,需注意标签清晰度和颜色区分度。