数据可视化7:MATLAB绘制堆叠环形柱状图

       堆叠环形柱状图(Stacked Donut Chart)是数据可视化中的一种复合图表,结合了堆叠柱状图和环形图的特点,主要用于展示 多类别数据的构成比例及其层级关系


核心作用

  1. 展示多层级的占比关系

    • 环形结构可直观显示整体与部分的关系(类似饼图),而堆叠设计允许在每一层环形中进一步细分数据,适合展示 多维度 的构成比例(如大类下的子类占比)。

  2. 对比不同组别的构成差异

    • 通过多个同心环或并排的环形柱,可以对比不同组别(如不同时间段、地区)下各成分的分布情况。

  3. 节省空间且美观

    • 环形中空的设计比传统堆叠柱状图更紧凑,适合在有限空间内展示复杂数据,同时视觉上更具吸引力。


图形展示

绘制堆叠环形柱状图的方法

在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

典型应用场景

  1. 市场份额分析

    例如:外环显示各品牌的市场份额,内环细分每个品牌下不同产品的销售占比。
  2. 资源分配统计

    比如展示公司各部门的预算分配,内环为部门总预算,外环细分各项目的费用。
  3. 用户行为研究

    分析用户在不同渠道(外环)的点击量,并堆叠展示各渠道内用户年龄层(内环)的分布。
  4. 时间趋势对比

    用多层环形表示不同季度/年度的数据,每层环的堆叠部分展示该时间段内的成分变化。

    优缺点

  5. 优点

    • 适合展示层次化数据(整体→部分→子部分)。

    • 比普通饼图/环图承载更多信息。

  6. 缺点

    • 数据量过大时易显得杂乱,需谨慎设计颜色和标签。

    • 精确对比细微差异较困难(尤其是靠近中心的环)。


示例工具

可通过 Excel、Tableau、Power BI 或 Python(Matplotlib/Plotly)等工具制作,需注意标签清晰度和颜色区分度。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值