使用 Matplotlib 绘制带注释的分组柱状图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用Python Matplotlib创建分组柱状图,以及如何用标签注释柱子。我们将使用帕尔默企鹅数据集(Palmer Penguins dataset)中的数据来创建一个按物种显示企鹅属性的图表。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”(Notebook)标签页,以访问Jupyter Notebook进行练习。

有时,你可能需要等待几秒钟让Jupyter Notebook完成加载。由于Jupyter Notebook的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向Labby提问。课程结束后提供反馈,我们会立即为你解决问题。

导入所需库

我们将首先导入处理数据和创建图表所需的库。

import matplotlib.pyplot as plt
import numpy as np

准备数据

接下来,我们将为图表准备数据。我们有三种企鹅和三个属性,所以我们将创建一个字典,其中包含每种企鹅各属性的平均值。

species = ("Adelie", "Chinstrap", "Gentoo")
penguin_means = {
    'Bill Depth': (18.35, 18.43, 14.98),
    'Bill Length': (38.79, 48.83, 47.50),
    'Flipper Length': (189.95, 195.82, 217.19),
}

创建分组柱状图

现在,我们可以使用Matplotlib的bar函数来创建图表。我们将创建一个循环,遍历我们的属性,并为每个属性创建一组柱子。我们还将调整柱子的宽度和每组柱子的位置。

x = np.arange(len(species))
width = 0.25
multiplier = 0

fig, ax = plt.subplots()

for attribute, measurement in penguin_means.items():
    offset = width * multiplier
    rects = ax.bar(x + offset, measurement, width, label=attribute)
    multiplier += 1

为柱子添加标签

我们可以使用Matplotlib的bar_label函数为柱子添加标签。这将在每个柱子上方添加其对应的值。

ax.bar_label(rects, padding=3)

自定义图表

我们可以通过添加标签、标题,调整x轴刻度标签和图例来定制图表。我们还将设置y轴限制,以确保所有数据都可见。

ax.set_ylabel('Length (mm)')
ax.set_title('Penguin attributes by species')
ax.set_xticks(x + width, species)
ax.legend(loc='upper left', ncols=3)
ax.set_ylim(0, 250)

显示图表

最后,我们可以使用Matplotlib的show函数来显示图表。

plt.show()

总结

在本实验中,我们学习了如何使用Python的Matplotlib创建分组柱状图,以及如何用标签为柱子添加注释。我们使用了帕尔默企鹅(Palmer Penguins)数据集的数据来创建一个按物种显示企鹅属性的图表。我们还学习了如何通过添加标签、标题以及调整x轴刻度标签和图例来自定义图表。