使用 Matplotlib 创建直方图

PythonPythonBeginner
立即练习

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

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

简介

在本教程中,我们将学习如何使用 Matplotlib 库创建直方图。直方图是数据集分布的图形表示。它是对连续变量概率分布的一种估计。要创建直方图,我们需要将整个值范围划分为一系列区间或 bins,然后计算落入每个区间的值的数量。

虚拟机提示

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

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

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

导入必要的库

首先,我们需要导入必要的库,即 NumPy 和 Matplotlib。

import matplotlib.pyplot as plt
import numpy as np

生成随机数据

我们将使用 NumPy 的 random.normal 函数生成两组随机数据。这两组数据将用于创建不同样式的直方图。

np.random.seed(19680801)

mu_x = 200
sigma_x = 25
x = np.random.normal(mu_x, sigma_x, size=100)

mu_w = 200
sigma_w = 10
w = np.random.normal(mu_w, sigma_w, size=100)

创建一个基本的直方图

我们将使用 Matplotlib 的 hist 函数创建一个基本的直方图。这个直方图将有 10 个大小相等的 bins。

plt.hist(x, bins=10)
plt.show()

更改 bins 的数量

我们可以通过在 hist 函数中指定 bins 参数来更改 bins 的数量。在这个例子中,我们将创建一个有 20 个 bins 的直方图。

plt.hist(x, bins=20)
plt.show()

更改直方图样式

我们可以通过在 hist 函数中指定 histtype 参数来更改直方图的样式。在这个例子中,我们将创建一个带有颜色填充的阶梯曲线直方图。

plt.hist(x, bins=20, density=True, histtype='stepfilled', facecolor='g', alpha=0.75)
plt.show()

创建具有自定义 bin 宽度的直方图

我们可以通过提供一个 bin 边缘列表来创建具有自定义且不等宽 bin 的直方图。在这个例子中,我们将创建一个 bin 间距不均匀的直方图。

bins = [100, 150, 180, 195, 205, 220, 250, 300]
plt.hist(x, bins=bins, density=True, histtype='bar', rwidth=0.8)
plt.show()

创建两个堆叠柱状图的直方图

我们可以通过调用两次 hist 函数并将 histtype 参数设置为 'barstacked' 来创建两个堆叠柱状图的直方图。在这个例子中,我们将创建两个堆叠柱状图的直方图。

plt.hist(x, density=True, histtype='barstacked', rwidth=0.8)
plt.hist(w, density=True, histtype='barstacked', rwidth=0.8)
plt.show()

总结

在本教程中,我们学习了如何使用 Matplotlib 库创建直方图。我们还学习了如何更改 bins 的数量、直方图的样式,以及如何创建具有自定义 bin 宽度和堆叠柱状图的直方图。