使用 Matplotlib 绘制直方图

PythonPythonBeginner
立即练习

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

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

简介

Matplotlib 是 Python 中一个流行的数据可视化库。可视化数据分布最常见的方法之一是使用直方图。在本实验中,我们将学习如何使用 Matplotlib 创建直方图,并探索不同的定制选项。

虚拟机使用提示

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

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

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

导入必要的库

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

import matplotlib.pyplot as plt
import numpy as np

生成示例数据

接下来,我们将生成一些用于直方图的示例数据。在这个例子中,我们将生成三组随机数据。

np.random.seed(19680801)
n_bins = 10
x = np.random.randn(1000, 3)

绘制基本直方图

我们可以使用 Matplotlib 中的 hist 函数创建一个基本直方图。此函数接受我们要绘制的数据以及我们要使用的 bins 数量。

plt.hist(x, n_bins)
plt.show()

添加标签和标题

我们可以使用 xlabelylabeltitle 函数为 x 轴和 y 轴添加标签,并为图表添加标题。

plt.hist(x, n_bins)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Random Data')
plt.show()

自定义直方图

我们可以通过使用 coloralphaedgecolor 参数来更改条形图的颜色、透明度和边缘颜色,从而自定义直方图。

plt.hist(x, n_bins, color='green', alpha=0.5, edgecolor='black')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Random Data')
plt.show()

绘制多个直方图

通过将数据数组传递给 hist 函数,我们可以在同一图表上绘制多个直方图。

plt.hist(x, n_bins, color='green', alpha=0.5, edgecolor='black', label=['Sample 1', 'Sample 2', 'Sample 3'])
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Random Data')
plt.legend()
plt.show()

需要说明的是,你提供的代码中 label 参数使用方式有误,label 应该是为每个直方图单独设置标签,而不是作为一个列表整体传入,正确的用法类似这样:

plt.hist(x[:, 0], n_bins, color='green', alpha=0.5, edgecolor='black', label='Sample 1')
plt.hist(x[:, 1], n_bins, color='blue', alpha=0.5, edgecolor='black', label='Sample 2')
plt.hist(x[:, 2], n_bins, color='red', alpha=0.5, edgecolor='black', label='Sample 3')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Random Data')
plt.legend()
plt.show()

绘制堆叠直方图

通过将 stacked 参数设置为 True,我们可以绘制堆叠直方图。

plt.hist(x, n_bins, color=['green', 'blue','red'], alpha=0.5, edgecolor='black', label=['Sample 1', 'Sample 2', 'Sample 3'], stacked=True)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Stacked Histogram of Random Data')
plt.legend()
plt.show()

绘制阶梯直方图

通过将 histtype 参数设置为 'step',我们可以绘制阶梯直方图。

plt.hist(x, n_bins, histtype='step', color=['green', 'blue','red'], label=['Sample 1', 'Sample 2', 'Sample 3'])
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Step Histogram of Random Data')
plt.legend()
plt.show()

总结

在本实验中,我们学习了如何使用Matplotlib创建直方图。我们探索了不同的定制选项,包括更改条形图的颜色、透明度和边缘颜色,在同一图表上绘制多个直方图,堆叠直方图以及绘制阶梯直方图。这些工具可以帮助我们更好地理解数据的分布。