在 Matplotlib 中创建分组条形图


什么是 Matplotlib?

Matplotlib 是一个流行的开源 Python 数据可视化库,广泛应用于科学、工程和数据科学领域。Matplotlib 以其灵活性和广泛的可定制选项而闻名,这使其成为创建用于研究或数据分析的复杂可视化的绝佳选择。最流行的可视化类型之一是分组条形图,它允许并排比较多个变量,同时显示组或子类别之间的差异。在本教程中,我们将向您展示如何使用现实世界的例子在 Matplotlib 中创建分组条形图。

条形图在数据分析中的用途和意义是什么?

条形图是一种常用的数据分析可视化工具,用于显示分类数据的分布。在条形图中,类别通常显示在 x 轴上,而每个条形的高度表示每个类别中观察值的频率或比例。

条形图的意义取决于分析的上下文和目的。以下是条形图如何有用的几个例子:

比较频率或比例 - 条形图可用于比较不同类别中观察值的频率或比例。例如,条形图可用于比较临床试验中患有不同类型疾病的患者人数,或市场研究中偏好不同品牌产品的顾客比例。每个条形的高度代表每个类别中观察值的频率或比例,便于直观比较。

显示随时间或其他变量变化的趋势 - 条形图也可用于显示随时间或其他变量变化的观察值的频率或比例。例如,条形图可用于显示商店中顾客在不同时间段购买不同产品的数量。通过对每个时间段使用不同的颜色或图案,可以很容易地看出购买分布如何随时间变化。

识别异常值或异常观察值 - 条形图也可用于识别异常值或异常观察值。如果一个类别的频率或比例远高于或低于其他类别,则可能表示存在异常观察值或数据错误。

在统计显著性方面,条形图通常用作描述性工具,而不是正式的统计检验。但是,它们仍然可以提供关于分类数据分布的有用信息,并有助于识别可能感兴趣的模式或趋势。需要注意的是,如果条形图构建不当或数据不适合此类可视化,则可能会产生误导。因此,务必仔细考虑分析的目的,并相应地选择合适的可视化工具。

先决条件

在我们深入探讨任务之前,需要在您的系统上安装一些东西:

推荐设置列表:

  • pip install pandas, matplotlib

  • 用户应能够访问任何独立的 IDE,例如 VS-Code、PyCharm、Atom 或 Sublime text。

  • 也可以使用在线 Python 编译器,例如 Kaggle.com、Google Cloud Platform 或其他任何编译器。

  • 更新版本的 Python。在撰写本文时,我使用了 3.10.9 版本。

  • 了解 Jupyter notebook 的使用方法。

  • 虚拟环境的知识和应用将是有益的,但不是必需的。

  • 还预计使用者对统计学和数学有很好的理解。

完成任务所需的步骤

让我们看看代码示例和步骤:

示例

import numpy as np
import matplotlib.pyplot as plt

# Define the data for the plot
data = {
   'Group 1': [20, 35, 30, 35, 27],
   'Group 2': [25, 32, 34, 20, 25],
   'Group 3': [12, 20, 22, 30, 15],
}

# Define the x-axis labels and the width of each bar
labels = ['Category 1', 'Category 2', 'Category 3', 'Category 4', 'Category 5']
bar_width = 0.2

# Create a numpy array of the x-axis positions for each group of bars
x_pos = np.arange(len(labels))

# Create a figure and axis object
fig, ax = plt.subplots()

# Loop through each group of bars and create a set of bars for each group
for i, (group, values) in enumerate(data.items()):
   # Calculate the x-axis position for the current group of bars
   pos = x_pos + (i * bar_width)
   # Create a set of bars for the current group
   ax.bar(pos, values, width=bar_width, label=group)

# Set the x-axis labels and tick positions
ax.set_xticks(x_pos + ((len(data) - 1) / 2) * bar_width)
ax.set_xticklabels(labels)

# Add a legend to the plot
ax.legend()

# Add axis labels and a title to the plot
ax.set_xlabel('Categories')
ax.set_ylabel('Values')
ax.set_title('Grouped Bar Plot')

# Show the plot
plt.show()

在这个例子中,我们有三组条形图(组 1、组 2 和组 3)和五个类别(类别 1、类别 2、类别 3、类别 4 和类别 5)。我们使用 Python 字典定义绘图数据,其中键表示组,值是每个类别的值列表。我们还定义了每个条形的宽度和 x 轴的标签。

然后,我们使用 np.arange() 函数创建一个包含每组条形图 x 轴位置的 NumPy 数组。我们使用 plt.subplots() 函数创建图形和轴对象。然后,我们遍历每组条形图,并使用 ax.bar() 函数为每组创建一组条形图。我们分别使用 ax.set_xticks() 和 ax.set_xticklabels() 函数设置 x 轴标签和刻度位置。我们使用 ax.legend() 函数向绘图添加图例。最后,我们使用 ax.set_xlabel()、ax.set_ylabel() 和 ax.set_title() 函数向绘图添加轴标签和标题。我们使用 plt.show() 函数显示绘图。

此代码应该创建一个分组条形图,其中包含三组条形图、五个类别以及相应的标签、图例和轴标题。您可以修改数据、标签和其他参数以满足您的特定需求。

输出

这张图片显示了使用 matplotlib 的不同分组条形图

结论

在本教程中,我们逐步向您展示了如何使用实际示例在 Matplotlib 中创建分组条形图。我们涵盖了分组条形图的所有主要方面,包括基本结构、水平分组条形图、堆叠分组条形图以及带有标签和图例的分组条形图。按照本教程中概述的说明,您应该能够为您的研究或数据分析目的创建您自己的自定义分组条形图。

更新于:2023年4月20日

3K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告