Python 绘制直方图拟合曲线

2024年04月30日 Python 绘制直方图拟合曲线 极客笔记

Python 绘制直方图拟合曲线

在数据可视化的过程中,有时候我们需要展示数据的分布情况,直方图是一个常用的工具。直方图可以帮助我们直观地了解数据的分布形态,以及数据的集中趋势和离散程度。除此之外,有时候我们还希望在直方图上添加拟合曲线,来更好地描述数据的概括性信息。

本文将介绍如何使用 Python 绘制直方图,并在直方图上添加拟合曲线。

准备数据

首先,我们需要准备一组数据来绘制直方图。在这里,我们随机生成一组服从正态分布的数据作为示例数据。

import numpy as np

np.random.seed(0)
data = np.random.normal(loc=0, scale=1, size=1000)

绘制直方图

接下来,我们使用 Matplotlib 库来绘制直方图。Matplotlib 是一个功能强大的绘图库,可以用来创建各种类型的统计图表。

import matplotlib.pyplot as plt

plt.hist(data, bins=30, density=True, color='skyblue', edgecolor='black', alpha=0.7)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Data')
plt.show()

运行上述代码后,我们将得到一幅直方图,展示了数据的分布情况。

添加拟合曲线

有时候,直方图本身可能并不能完全展示数据的概况。我们可以通过拟合曲线来更好地描述数据的分布情况。在这里,我们使用 SciPy 库提供的函数来拟合数据,并将拟合曲线添加到直方图中。

from scipy.stats import norm

plt.hist(data, bins=30, density=True, color='skyblue', edgecolor='black', alpha=0.7)
mu, std = norm.fit(data)
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Histogram and Fitted PDF')
plt.show()

在上述代码中,我们首先使用 norm.fit() 函数拟合数据的均值 mu 和标准差 std,然后利用拟合后的参数绘制正态分布曲线。最后,将拟合曲线与直方图一同展示出来。

通过添加拟合曲线,我们可以更清晰地看到数据的分布情况,以及数据是否符合某种特定的分布类型。

总结

本文介绍了如何使用 Python 绘制直方图,并在直方图上添加拟合曲线。直方图是一种常用的数据可视化工具,可以帮助我们直观地了解数据的分布情况。而添加拟合曲线则可以进一步描述数据的概括性信息,使得数据的特征更加明显。

本文链接:http://so.lmcjl.com/news/3465/

展开阅读全文