优秀的编程知识分享平台

网站首页 > 技术文章 正文

如何用Python生成直方图并添加规格线

nanyue 2024-09-11 05:27:53 技术文章 4 ℃

直方图是一种统计图表,用于展示数据分布的形状。它通过将数据分组到连续的、不重叠的区间(或“箱”)中,然后以这些箱的数量来表示数据分布的情况。每个箱的高度表示在该数值范围内数据点的频数(或频率)。直方图是数据分析和统计中非常重要的工具,尤其用于展示数据的频率分布。

直方图的特点

  1. :直方图通常包括两个轴——水平轴(x轴)表示数据的类别或数值范围,垂直轴(y轴)表示频数或频率。
  2. 箱子:数据被分割到一系列的箱子中,每个箱子对应于数据范围的一个区间。箱子的宽度应该是一致的。
  3. 高度:每个箱子的高度表示该数值范围内的数据点数量。有时,这些高度可以被转换为表示相对频率或概率密度。

直方图的用途

  • 数据分布:直方图可以展示数据是如何在各个数值区间分布的,包括数据集中(聚集)的趋势和分散(发散)的程度。
  • 识别模式:可以用来识别数据的模式,例如正态分布、偏斜分布或双峰分布等。
  • 比较数据集:通过比较不同数据集的直方图,可以直观地看出它们在分布形状上的异同。

直方图和条形图的区别

虽然直方图和条形图在外观上相似,但它们用于不同类型的数据。直方图用于连续数据,显示数据的分布,而条形图用于离散数据,展示不同类别的比较。

在使用直方图时,正确选择箱子的大小和数量是非常重要的,因为这会影响对数据分布形状的解释。

在这个Python示例中,我们创建了一个包含1000个样本点的数据集,这些数据点围绕着平均值50、标准差5的正态分布。接着,我用这些数据生成了一个直方图,并在其上添加了正态分布曲线(PDF)和规格线。

  • 直方图:显示数据的分布情况。
  • 正态分布曲线:描绘了理论上的正态分布情况,与直方图的实际数据分布进行比较。
  • 规格线:标记了平均值加减一个标准差的位置。在这个示例中,这两条线分别位于大约45(50-5)和55(50+5)。
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# 示例数据:假设这是一组测量数据
data = np.random.normal(loc=50, scale=5, size=1000)

# 创建直方图
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')

# 添加正态分布曲线
mn, mx = plt.xlim()
kde_xs = np.linspace(mn, mx, 301)
kde = stats.gaussian_kde(data)
plt.plot(kde_xs, kde.pdf(kde_xs), label="PDF")

# 添加规格线
plt.axvline(data.mean() - data.std(), color='k', linestyle='dashed', linewidth=1)
plt.axvline(data.mean() + data.std(), color='k', linestyle='dashed', linewidth=1)

# 标签和图例
plt.title("Histogram with Normal Distribution and Specification Lines")
plt.xlabel("Value")
plt.ylabel("Density")
plt.legend()

# 显示图表
plt.show()

Tags:

最近发表
标签列表