简介
本实验是一个关于如何使用 Python Matplotlib 库创建直方图的分步教程。直方图是数值数据分布的图形表示。它是连续变量概率分布的一种估计。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
导入必要的库
在这一步中,我们将导入两个库:numpy 和 matplotlib。Numpy 是一个用于 Python 编程语言的库,它增加了对大型多维数组和矩阵的支持。Matplotlib 是一个用于 Python 编程语言的绘图库。
import numpy as np
import matplotlib.pyplot as plt
生成样本数据
在这一步中,我们将使用 numpy 生成样本数据。我们将从均值为 100、标准差为 15 的正态分布中生成随机数据。
np.random.seed(19680801)
mu = 100 ## 分布的均值
sigma = 15 ## 分布的标准差
x = mu + sigma * np.random.randn(437)
创建直方图
在这一步中,我们将使用 matplotlib 创建一个直方图。我们将把 bins 的数量设置为 50,并启用密度参数以对 bin 的高度进行归一化,使得直方图的积分等于 1。
num_bins = 50
fig, ax = plt.subplots()
n, bins, patches = ax.hist(x, num_bins, density=True)
添加最佳拟合线
在这一步中,我们将为直方图添加一条最佳拟合线。我们将计算该线的 y 值,并将其绘制在直方图之上。
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
np.exp(-0.5 * (1 / sigma * (bins - mu))**2))
ax.plot(bins, y, '--')
自定义直方图
在这一步中,我们将通过添加标签、标题和调整布局来自定义直方图。
ax.set_xlabel('Smarts')
ax.set_ylabel('Probability density')
ax.set_title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')
fig.tight_layout()
plt.show()
总结
在这个实验中,我们学习了如何使用 Python 的 Matplotlib 库来创建直方图。我们从正态分布生成了样本数据,并使用 matplotlib 创建了一个直方图。我们还添加了一条最佳拟合线,并通过添加标签和标题来自定义直方图。