嵌套饼图/甜甜圈图 (Nested Pie/Donut Chart):玩转多层级比例数据

在这里插入图片描述

CSDN的各位朋友,大家好!你是否曾被那些层层叠叠、关系复杂的数据搞得焦头烂额?想用一张图说清楚,却发现传统的图表总是差点意思。今天,就来聊聊一个能够轻松驾驭层级数据的可视化神器——嵌套饼图

如果说21世纪有什么技术能被冠以“革命性”之名,人工智能(AI)恐怕当仁不让。它不再是科幻小说里的遥远幻想,而是已经悄然融入我们日常生活的“隐形伙伴”。但很多人可能没意识到,AI的能力远不止于聊天和生成图片,它正在重塑一个更需要精准与洞察的领域——数据分析与可视化

这篇文章将带你从概念到实践,彻底搞懂嵌套饼图,并探讨AI如何为我们解锁更高效、更智能的数据可视化未来。


1. 什么是嵌套饼图?为什么需要它?

想象一下俄罗斯套娃,或者大树的年轮。嵌套饼图(Nested Pie Chart),或其变体甜甜圈图(Donut Chart),就采用了类似的思想。它通过一系列同心圆环,将具有父子关系的数据清晰地展示出来。

  • 内层圆环:代表最高层级的分类(父级)。
  • 外层圆环:代表更细分的子类别,并且每个子类别都从属于内层的一个父级。

为什么需要它?

因为世界是分层的。一个公司的总收入,可以按部门分,部门的收入又可以按产品线分。一个网站的流量,可以按来源渠道分,每个渠道又可以按新老用户分。传统的饼图只能展示第一层,再想深入就得做好几个图,既繁琐又无法直观地看出全局联系。嵌套饼图恰好解决了这个痛点,它能在同一视图中,同时呈现“整体与部分”以及“层级与细分” 的关系。


2. 手把手实践:用 Matplotlib 绘制嵌套甜甜圈图

理论说再多,不如亲手敲一遍代码。这里以 Python 中最经典的 matplotlib 库为例,展示如何从零到一创建一个嵌套甜甜圈图。

第一步:准备数据

首先,我们需要具有层级关系的数据。假设我们有一份网站流量来源数据。

import matplotlib.pyplot as plt
import numpy as np

# 数据准备
# 外环:流量来源渠道
outer_labels = ['直接访问', '搜索引擎', '社交媒体']
outer_sizes = np.array([30, 45, 25])

# 内环:各渠道下的具体来源
# 注意:内环数据需要按外环的顺序进行分组
inner_labels = ['收藏夹', '输入网址', '谷歌', '百度', '必应', '知乎', '微博']
inner_sizes = np.array([10, 20, 25, 20, 10, 15, 10])

# 计算分组,用于颜色区分
# [len(inner_sizes_for_group_1), len(inner_sizes_for_group_2), ...]
# 这里直接手写了,实际应用中可以根据数据结构自动生成
# 10+20=30, 25+20=45, 15+10=25
# 收藏夹+输入网址 = 直接访问
# 谷歌+百度 = 搜索引擎
# 知乎+微博 = 社交媒体
inner_group_sizes = [2, 3, 2]
第二步:设置颜色和样式

为了让图表更清晰,我们为不同层级、不同分组设置不同的颜色。

# 颜色设置
outer_colors = plt.colormaps['tab20c'](np.arange(len(outer_sizes)) * 4)

# 内环颜色要根据外环的分组来,实现视觉上的关联
inner_colors = []
for i, group_size in enumerate(inner_group_sizes):
    # 为每个组应用不同的颜色梯度
    color_map = plt.colormaps['viridis'] # 也可以选择其他,如 'Blues', 'Greens'
    group_colors = color_map(np.linspace(0.4, 0.8, group_size))
    inner_colors.extend(group_colors)

第三步:绘制图表

这是最核心的步骤。我们通过调用两次 ax.pie() 函数,并巧妙利用 radiuswedgeprops 参数,来绘制两个叠加的“甜甜圈”。

# 创建图表
fig, ax = plt.subplots(figsize=(10, 8))

# 1. 绘制外环
wedges_outer, texts_outer, autotexts_outer = ax.pie(
    outer_sizes,
    radius=1.0,
    colors=outer_colors,
    labels=outer_labels,
    startangle=90,
    frame=True,
    wedgeprops=dict(width=0.4, edgecolor='w'), # 设置环宽
    autopct='%1.1f%%',
    pctdistance=0.85
)

# 2. 绘制内环
wedges_inner, texts_inner, autotexts_inner = ax.pie(
    inner_sizes,
    radius=0.6, # 内环半径要小于外环
    colors=inner_colors,
    startangle=90,
    wedgeprops=dict(width=0.4, edgecolor='w'),
    autopct='%1.1f%%',
    pctdistance=0.75
)

# 3. 添加图例和标题
ax.legend(wedges_inner, inner_labels,
          title="具体来源",
          loc="center left",
          bbox_to_anchor=(1, 0, 0.5, 1))

plt.setp(autotexts_outer, size=10, weight="bold", color='white')
plt.setp(autotexts_inner, size=9, color='white')
ax.set_title("网站流量来源层级分析", fontsize=16, weight='bold')

# 确保图形是正圆
ax.set_aspect('equal')

plt.show()

运行以上代码,你就能得到一个信息量满满且视觉效果出色的嵌套甜甜圈图。


3. 跨界应用:嵌套饼图的5个实战案例

理论终须落地。嵌套饼图的强大之处在于其广泛的应用场景,远不止流量分析。

案例一:洞察土地利用的变迁

在环境科学和地理信息系统(GIS)中,研究者常用它来展示土地利用类型的转换。

  • 内环:某个时间点的主要土地类型(如森林、耕地、水域)。
  • 外环:数年后,这些土地类型分别转化成了什么(如部分森林变成了耕地,部分耕地变成了建设用地)。
    这种图能让决策者一眼看出城市扩张、森林退化等变化的主要驱动力。
案例二:解密复杂的微生物世界

在生物信息学领域,分析肠道菌群、土壤微生物的构成是一项常规任务。微生物的分类(界、门、纲、目、科、属、种)天然就是层级结构。

  • 内环:细菌的“门”(Phylum)级别分布。
  • 外环:每个“门”下,更细分的“纲”(Class)或“属”(Genus)的相对丰度。
    这有助于科学家快速识别不同环境下(如健康与患病状态)的优势菌群差异。
案例三:让预算分配一目了然

在企业财务或个人记账中,嵌套饼图是展示预算和开销的绝佳工具。

  • 内环:一级开销类别(如生活成本、交通、娱乐)。
  • 外环:每个一级类别下的具体支出项(如生活成本里的房租、水电、伙食费)。
    管理者可以迅速定位主要的成本中心,优化预算分配。
案例四:深度挖掘用户调研数据

市场研究和产品分析中,调研问卷的结果往往是多维度的。

  • 内环:用户的总体满意度(如满意、一般、不满意)。
  • 外环:在“满意”的群体中,他们具体对哪些功能(如UI设计、性能、客服)最满意。
    这能帮助产品经理精准定位产品的优势和劣势。
案例五:临床试验中的患者画像

在严谨的医疗研究中,确保临床试验的患者群体具有代表性至关重要。

  • 内环:按性别划分的患者比例。
  • 中环:每个性别下,不同年龄段的分布。
  • 外环:每个年龄段下,不同种族的分布。
    研究人员可以快速评估样本的多样性,确保研究结果的普适性。

4. 智能未来:当数据可视化遇上 AI

尽管 matplotlib 这样的工具功能强大,但从数据准备、代码编写到样式微调,整个过程仍然需要相当的专业知识和时间投入。尤其是面对海量、多源的异构数据时,人工处理的效率瓶颈和出错风险都显著增加。

那么,这一切究竟意味着什么?答案是——我们需要更智能的工具

这正是 Gemini 这类前沿AI大模型崭露头角的地方。想象一下,未来的数据可视化流程可能会是这样:

  1. 智能数据整合与清洗:你只需向AI描述你的数据源和目标,AI就能自动完成数据连接、清洗、转换和聚合,并为你构建出适合嵌套饼图的层级结构。那些繁琐的ETL(提取、转换、加载)过程,将成为历史。
  2. 自然语言生成图表:不再需要编写复杂的代码。你可以直接用自然语言下达指令:“请为我生成一个展示各区域销售额及其产品线构成的嵌套甜甜圈图,突出显示华东区的贡献。”AI会立即理解你的意图,并生成符合要求、出版级别的精美图表。
  3. 智能美学与合规:AI能理解“专业”、“现代”、“简约”等风格要求,自动选择最佳的配色方案、字体和布局。对于有严格规范的场景(如企业VI、学术期刊),它能确保所有图表在视觉上高度一致且合规。
  4. 动态交互与洞察发现:AI生成的不再是静态图片,而是可交互的仪表盘。它甚至能主动分析图表,用高亮和文字标注出数据中的异常点、关键趋势和潜在关联,直接告诉你:“注意,第三季度的研发设备采购预算超支了20%,主要原因是项目A的硬件升级。”

Gemini 1.5 模型,正是这场变革的先行者。它拥有强大的多模态理解能力和代码生成能力,能够将数据处理、逻辑分析与视觉呈现无缝衔接。它的目标,是将数据科学家和分析师从繁琐的“体力劳动”中解放出来,让他们能专注于“思考”和“决策”——这才是人类智慧的核心价值所在。


5. 避坑指南:嵌套饼图的优势与局限

没有一种图表是万能的,嵌套饼图也有它的“脾气”。

优势 (Pros)
  • 层级清晰:展示分层结构无人能及。
  • 视觉直观:能快速提供一个“鸟瞰式”的全局视图。
  • 空间高效:在有限区域内展示大量信息。
局限 (Cons)
  • 不擅长精确比较:人眼对角度和面积的判断不如对长度(如条形图)敏感。当扇区大小接近时,很难精确比较。
  • 容易视觉混乱:当层级过多(>3层)或类别过细时,图表会变得拥挤不堪,标签重叠,失去可读性。
  • 不适合展示趋势:它本质上是静态快照,不适合展示数据随时间的变化。
使用建议
  1. 保持简洁:层级尽量控制在2-3层。
  2. 合并小项:将占比极小的类别合并为“其他”,避免图表过于零碎。
  3. 巧用颜色:用同一色系的不同深浅来表示父子关系,增强关联感。
  4. 组合使用:当需要精确比较时,可以搭配条形图或表格一起使用。

总结

嵌套饼图/甜甜圈图,无疑是数据可视化工具箱中一件应对层级数据的利器。从商业决策到科学研究,它都能以其独特的魅力,将复杂的数据关系转化为直观的视觉故事。

而随着AI技术的深度融合,我们有理由相信,未来创造和解读这些复杂图表的方式将发生颠覆性的变化。数据可视化的门槛将不断降低,而其所能揭示的洞察深度将不断增加。

那么,你准备好拥抱这个由数据和AI共同驱动的新时代了吗?你认为AI还会从哪些方面改变我们与数据交互的方式?欢迎在评论区留下你的思考!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐