使用Matplotlib在Python中创建堆叠条形图

2025年4月16日 | 阅读 9 分钟

在本文中,我们将深入探讨如何使用 Matplotlib 创建堆叠条形图。让我们来分解一些关键概念

Matplotlib 是 Python 中用于从数据数组创建二维图表的绝佳工具。它是一个多功能的がデータ可視化ライブラリ,可以与更广泛的 SciPy 堆栈无缝协作,利用 NumPy 数组的强大功能。

想象一个使用矩形条来表示不同数据类别的图表。这些条的长度和高度与其代表的值成正比。这些条可以水平或垂直排列,具体取决于您想如何展示数据。

现在,让我们通过堆叠条形图来提升一个层次。想象一下,不同的组堆叠在一起。这些组的总值决定了每个条形的高度。与从零开始增长到值的常规条形图不同,堆叠条形图从底部开始,一直增长到累积值,从而创建每个组的累积影响的直观表示。

方法

  1. 导入库 (Matplotlib)
  2. 导入/创建数据。
  3. 以堆叠方式绘制条形图。

1. 导入库 (Matplotlib)

输出

Create a Stacked Bar Plot Using Matplotlib in Python

代码解释

  • 导入 Matplotlib

将 matplotlib.pyplot 模块导入为 plt,用于创建图表。

  • 定义数据

创建列表 x、y1 和 y2,分别表示类别和两个集合的相应数据点。

  • 创建条形图(第一个集合)

为第一个数据集 (y1) 生成带有蓝色条形的条形图。

  • 堆叠条形图(第二个集合)

在第一个集合 (y1) 之上添加第二个集合的条形图 (y2),以创建堆叠条形图。第二个集合的条形图颜色为红色 ('r's)。

  • 显示图表

显示生成的条形图。

总而言之,该代码使用 Matplotlib 为每个类别 (x) 创建了包含两个数据集 (y1 和 y2) 的堆叠条形图。蓝色条形代表第一个集合,红色条形堆叠在上面代表第二个集合。此可视化有助于理解每个类别的总值以及各个组件的贡献。

2. 具有多个数据的堆叠条形图

输出

Create a Stacked Bar Plot Using Matplotlib in Python

代码解释

好的,让我们用更简单的术语来解释这段代码

  • 导入库

我们使用一个名为 matplotlib.pyplot 的 Python 库来制作图表,另一个名为 numpy 的库来进行一些数学运算。

  • 定义数据

我们有一系列团队名称 (A、B、C、D),每个团队有四个回合的分数 (y1、y2、y3、y4)。

  • 创建堆叠条形图

我们使用 plt.bar 来创建条形图。想象一下为每个团队堆叠不同颜色的条形。红色条形是 y1,蓝色条形堆在上面 (y2),然后是黄色条形堆在前面两个条形之上 (y3),最后是绿色条形堆在所有条形之上 (y4)。

  • 添加标签和图例

我们使用 plt.xlabel() 和 plt.ylabel() 为 x 轴和 y 轴添加标签。图例就像一个指南,告诉我们哪种颜色对应哪个回合。

  • 设置标题并显示图表

我们使用 plt.title() 为图表添加标题。然后,我们使用 plt.show() 方法来显示整个图表。

3. 使用 Dataframe Plot 创建堆叠条形图

输出

Create a Stacked Bar Plot Using Matplotlib in Python

代码解释

当然,让我们用更简单的术语来解释提供的代码

  • 导入包

我们正在引入一些工具来帮助我们编写代码

  • pyplot: 这个工具可以帮助我们在 Python 中制作不同类型的图表。
  • numpy (np): 用于处理大量数字并进行数学运算的工具。
  • pandas (pd): 这就像 Python 的超级 Excel。它帮助我们使用表格处理数据。
  • 创建数据

我们使用 pandas 创建一个表格(类似于 Excel 表格)。它包含有关不同团队及其四个回合得分的信息。

  • 查看数据

我们打印出这个表格,看看它的样子。它向我们展示了数据的结构和内容。

  • 绘制数据

现在是激动人心的部分——从数据创建图表

  • plot: 这是 pandas 的一个命令,可以创建不同类型的图表。在这里,我们正在创建条形图。
  • x='Team': 团队名称将显示在图表的底部(x 轴)。
  • kind='bar': 我们正在创建条形图。
  • stacked=True: 这使得条形图堆叠在一起,我们可以轻松地查看总分数。
  • title='Stacked Bar Graph by dataframe': 这为我们的图表设置了标题。
  • 显示图表

最后,我们使用 matplotlib 来实际显示我们的图表。

总而言之,这段代码使用 pandas 和 matplotlib 创建了一个条形图,以显示不同团队在四个回合中的得分。团队显示在底部,条形图堆叠起来以显示他们的总得分。

因此,我们最终得到一个堆叠条形图。每个团队 (A、B、C、D) 的得分在四个回合中以不同的颜色显示。图例帮助我们将每种颜色与特定回合匹配。这是团队在这些回合中的表现的可视化表示。

无论您是为初次面试做准备,还是希望在不断变化的 Python 技术世界中提升技能。

优点

使用 Python 的 Matplotlib 创建堆叠条形图在可视化数据方面具有一些很酷的优势

  1. 理解部分与整体: 堆叠条形图在显示不同部分如何构成一个整体方面就像视觉超级英雄。想象一下,您想展示一大堆类别如何构成一个更大的图景——堆叠条形图可以满足您的需求。
  2. 识别趋势: 这些图表就像趋势的侦探。无论您是跟踪随时间变化还是跨不同组进行比较,堆叠条形图的每个切片都讲述了自己的故事。这就像看一部有不同角色的电影,每个角色代表一个类别或变量。
  3. 揭示累积数据: 如果您想显示累加的数据,堆叠条形图是您的首选。想象每个条形都是一个总计,而不同的部分显示了谁是为该总计做出贡献的真正 MVP。
  4. 对您的大脑友好: 堆叠条形图就像可视化领域的酷孩子。它们使您的大脑可以轻松地在每个条形内部快速比较大小。因此,如果您正在做一个演示文稿或撰写报告,这些图表就是您可视化的最佳伴侣。
  5. 多个类别: 堆叠条形图是数据世界的“多任务处理者”。它们在每个条形内处理多个类别,非常适合显示不同变量之间的复杂关系。
  6. 个性化定制: 使用 Matplotlib,您就是艺术家。您可以以各种方式自定义图表——更改颜色、添加标签、调整一切。这就像拥有自己的画布,使可视化既富有信息量又令人惊叹。
  7. Matplotlib 的魔力: Matplotlib 就像 Python 中绘图的魔杖。它是一个流行且文档齐全的库,可以很好地与堆叠条形图配合使用。您可以轻松地将这些图表集成到您的 Python 脚本和工作流中。
  8. 所有数据的伙伴: 堆叠条形图不挑剔;它们是各种数据的伙伴。无论是 Pandas DataFrames、NumPy 数组还是 Python 中的其他数据结构,它们都兼容,并已准备好以时尚的方式展示您的信息。

缺点

当您在 Python 中使用 Matplotlib 为数据可视化创建堆叠条形图时,它是一个方便的工具,但也有一些需要注意的事项

  1. 处理大量类别: 如果您有太多的类别,或者您的数据被分成许多段,您的堆叠条形图可能会变得混乱且难以理解。
  2. 选择合适的颜色: 为每个类别选择颜色可能很困难,特别是如果您有许多堆叠条形图。如果颜色不够醒目,可能会使人混淆或导致误解。
  3. 可能产生误导性表示: 根据堆叠条形图的方式,您的图表可能无法准确地表示数据,从而可能导致误解。确保堆叠顺序与数据中的逻辑分组或层次结构一致。
  4. 比较个体组件的局限性: 虽然堆叠条形图在显示跨类别的总值方面效果很好,但如果您想比较每个类别内的个体部分,它们可能不是最佳选择。
  5. 负值处理的挑战: 堆叠条形图在处理负值时可能会遇到困难,因为条形图堆叠在一起。这使得确定变化的规模和方向变得棘手。
  6. 定制性不高: 尽管 Matplotlib 是可定制的,但调整堆叠条形图中的某些内容,例如调整条形之间的间隙或更改单个条形的宽度,可能比其他类型的图表更具挑战性。
  7. 考虑可访问性和色盲: 如果您仅依靠颜色来区分类别,这可能会给色盲人士带来问题。最好使用图案、标签或其他视觉辅助工具来帮助理解。
  8. 有限的交互性: Matplotlib 有点静态,因此如果您需要高度交互式的图表,则可能需要探索其他支持动态可视化的库或工具。

尽管有这些要点,堆叠条形图在某些类型的数据和分析中仍然有用。只需确保根据您的目标和数据性质选择正确的可视化方法。

应用

当然!Matplotlib 的堆叠条形图提供了一个多功能的工具,用于在实时场景中可视化和理解数据。让我们分解一些这些图表派上用场的实际应用

  1. 财务数据分析
    1. 跟踪不同投资组合随时间的资金分配情况。
    2. 跟踪和可视化支出模式,例如公用事业、租金和娱乐等类别。
  2. 项目管理
    1. 通过堆叠不同阶段或团队贡献的条形图,来表示项目任务的进度。
    2. 跟踪不同项目组件随时间的资源分配情况。
  3. 销售与营销
    1. 通过直观地细分不同产品类别或销售渠道的贡献来分析销售业绩。
    2. 通过堆叠指标(如网站访问量、社交媒体参与度和电子邮件转化率)的条形图来衡量营销活动的有效性。
  4. 制造业资源利用率
    1. 可视化不同生产阶段的资源利用率(例如,人力、机器)。
    2. 跟踪制造业的设备停机时间和效率。
  5. 人口统计
    1. 使用堆叠条形图表示人口统计数据,例如年龄组、性别和地点。
    2. 跟踪人口分布随时间的变化。
  6. 调查和反馈分析
    1. 通过堆叠不同答案选项的条形图来显示调查响应。
    2. 分析客户反馈情绪随时间的变化。
  7. 网站分析
    1. 可视化网站流量来源,例如直接访问、搜索引擎引荐和社交媒体引荐。
    2. 监控网站或 Web 应用程序上的用户交互和行为。
  8. IT 环境中的资源分配
    1. 表示服务器环境中计算资源(CPU、内存、存储)的分配情况。
    2. 跟踪云资源随时间的使用情况。
  9. 教育和学生表现
    1. 显示不同学科或班级的成绩或分数分布。
    2. 分析学生在不同类别或学科中的表现。
  10. 医疗保健
    1. 可视化医疗保健数据中的疾病或患者人口统计数据的分布。
    2. 跟踪医疗保健资源和服务的利用率。

这些示例展示了堆叠条形图如何适应各种场景,为解释实时数据提供了一个强大的工具。根据您的具体需求,您可以自定义这些图表以提取有价值的见解并支持决策过程。

结论

总而言之,如果您喜欢使用 Python 和 Matplotlib 进行数据可视化,那么创建堆叠条形图可能会非常酷。它就像一个强大的工具,可以让您在一个图表中显示不同的类别及其子类别。Matplotlib 就像一个既灵活又易于使用的朋友。您可以根据需要调整图表的外观和元素位置。

因此,您可以使用一个名为“bar()”的函数以及一些数据魔法来创建图表。这有助于您了解不同部分如何构成整体。这就像将一个大类别分解成更小的部分,并了解每个部分对整体价值的贡献有多大。

只是一个友好的提醒,请确保您的数据井井有条。而且,请随意调整标签、颜色和其他内容,让您的图表看起来很棒并讲述一个清晰的故事。Matplotlib 就像 Python 中数据可视化的超级英雄,而堆叠条形图只是您可以使用它做的许多很酷的事情之一。


下一主题Python 的优势