Matplotlib 创建一个分组条形图

Matplotlib 创建一个分组条形图

什么是Matplotlib

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

条形图在数据分析中的用途和重要性是什么

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

条形图的重要性取决于上下文和分析的目的。以下是条形图可用于的一些示例:

比较频率或比例 − 条形图可用于比较不同类别中观察值的频率或比例。例如,条形图可用于比较临床试验中不同类型医疗条件的病人数量,或市场调研中偏好不同品牌产品的顾客比例。每个条形的高度表示每个类别中的观察值的频率或比例,可轻松进行视觉比较。

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

识别异常值或异常观察 − 条形图还可用于识别异常值或异常观察。如果一个类别的频率或比例远高于或远低于其他类别,这可能是异常观察或数据中的错误的指示。

在统计意义上,条形图通常用作描述性工具而不是形式化的统计测试。然而,它们仍然可以提供有关分类数据分布的有用信息,并有助于识别感兴趣的模式或趋势。值得注意的是,如果条形图构建不正确或数据不适合这种类型的可视化,它们可能会误导。因此,始终仔细考虑分析的目的,并相应选择适当的可视化工具非常重要。

先决条件

在我们开始任务之前,需要将以下内容安装到您的系统上−

推荐设置的列表−

  • pip install pandas,matplotlib

  • 预计用户将拥有访问任何独立的IDE,如VS-Code、PyCharm、Atom或Sublime Text。

  • 甚至还可以使用在线Python编译器,如Kaggle.com、Google云平台或其他任何在线编译器。

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

  • 对于使用Jupyter笔记本的知识。

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

  • 同时,预计人们将对统计学和数学有良好的理解。

实现任务所需的步骤

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

示例

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()

在这个例子中,我们有三组柱状图(Group 1,Group 2和Group 3)和五个类别(Category 1,Category 2,Category 3,Category 4和Category 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绘制的不同分组柱状图

结论

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程