网站首页 > 技术文章 正文
直方图是一种统计图表,用于展示数据分布的形状。它通过将数据分组到连续的、不重叠的区间(或“箱”)中,然后以这些箱的数量来表示数据分布的情况。每个箱的高度表示在该数值范围内数据点的频数(或频率)。直方图是数据分析和统计中非常重要的工具,尤其用于展示数据的频率分布。
直方图的特点
- 轴:直方图通常包括两个轴——水平轴(x轴)表示数据的类别或数值范围,垂直轴(y轴)表示频数或频率。
- 箱子:数据被分割到一系列的箱子中,每个箱子对应于数据范围的一个区间。箱子的宽度应该是一致的。
- 高度:每个箱子的高度表示该数值范围内的数据点数量。有时,这些高度可以被转换为表示相对频率或概率密度。
直方图的用途
- 数据分布:直方图可以展示数据是如何在各个数值区间分布的,包括数据集中(聚集)的趋势和分散(发散)的程度。
- 识别模式:可以用来识别数据的模式,例如正态分布、偏斜分布或双峰分布等。
- 比较数据集:通过比较不同数据集的直方图,可以直观地看出它们在分布形状上的异同。
直方图和条形图的区别
虽然直方图和条形图在外观上相似,但它们用于不同类型的数据。直方图用于连续数据,显示数据的分布,而条形图用于离散数据,展示不同类别的比较。
在使用直方图时,正确选择箱子的大小和数量是非常重要的,因为这会影响对数据分布形状的解释。
在这个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()
猜你喜欢
- 2024-09-11 Titanic生存问题预测(科技创新对我国来说不仅是发展问题更是生存问题)
- 2024-09-11 案例算法 | 机器学习python应用,简单机器学习项目实践
- 2024-09-11 "Python可视化神作:16大案例,国界大佬私藏,源码放送!"
- 2024-09-11 高斯混合模型 GMM 的详细解释(高斯混合模型图像分类)
- 2024-09-11 模态测试和核密度估计(模态测试方法)
- 2024-09-11 Vega图表示例库(上)(vega定义)
- 2024-09-11 数据可视化:解析小提琴图(Violin plots)
- 2024-09-11 如何知道一个变量的分布是否为高斯分布?
- 2024-09-11 [seaborn] seaborn学习笔记8-避免过度绘图Avoid Overplotting
- 2024-09-11 【Python可视化系列】一文教会你绘制美观的直方图(理论+源码)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)