Python中plt.hist函数参数与返回值详解及实战

陈默
陈默
发布时间:2026-10-11 | 2人浏览过
原创

本文详细解析Python中matplotlib.pyplot.hist函数用于绘制直方图的输入参数、返回值含义及调用方法。通过一维数组处理、分组柱数设置、颜色透明度配置等核心参数说明,结合读取CSV数据、扁平化转换与图表美化的完整代码示例,帮助读者快速掌握频数统计绘图流程及对象属性提取技巧。

函数功能与适用场景

matplotlib.pyplot.hist 是Python可视化库Matplotlib中专门用于计算并绘制数值分布直方图的核心函数。它通过将连续型数据划分为多个区间(Bin),统计各区间内的样本频数或概率密度,直观展示数据的集中趋势与离散程度,常用于探索性数据分析(EDA)与基础统计学可视化。

plt.hist函数参数签名示意图
官方文档中的函数签名与完整参数列表

核心输入参数说明

该函数支持丰富的控制选项,实际开发中最常使用的参数如下:

  • x:必需参数。传入待绘制的数值数据,必须为一维数组或列表。若数据为多维结构,需预先进行展平处理。
  • bins:可选。定义直方图的柱子数量或分箱宽度。默认为10,可指定整数表示柱数,也可传入数组指定各区间边界。
  • normed / density:可选。控制是否对频数进行归一化使其总和为1。注:normed在新版Matplotlib中已被弃用,建议改用density=True。
  • histtype:可选。设定柱子渲染样式,常用值包括 'bar'(默认)、'barstacked'(堆叠)、'step' 和 'stepfilled'。
  • color / edgecolor / alpha:视觉控制参数。分别设置柱体填充色、边框颜色以及透明度(0~1之间)。

返回值结构解析

调用该函数后,标准调用方式为 n, bins, patches = plt.hist(...),返回三个关键对象:

  • n:数组类型。存储每个分箱区间内的元素数量(频数)。若启用归一化模式,则返回相对频率或概率密度。
  • bins:数组类型。返回各分区的边界值,长度为分箱数+1,相邻两值构成一个区间。
  • patches:列表类型。包含每个条形对应的Patch图形对象实例,可通过遍历该列表动态修改单个柱子的样式属性(如填充色、边框线宽)。

完整调用步骤与代码示例

第1步:准备环境并加载数据

目的:获取待分析的数值源。
动作:导入numpy、matplotlib.pyplot及scipy.stats模块,使用np.loadtxt读取CSV文件路径,将表结构转为内存数组。

第2步:数据扁平化处理

目的:满足函数对一维输入的强制要求。
动作:若原始数据为二维表格或多维矩阵,调用np.ravel()将其转换为一维序列,避免维度不匹配报错。

第3步:调用hist函数绘制图形

目的:生成频数统计结果与绘图句柄。
动作:指定分箱数量(如nbins=9),执行plt.hist()命令并接收返回值。此时内存中已完成区间划分与计数。

第4步:配置坐标轴标签与字体

目的:优化图表可读性与中文兼容性。
动作:设置全局中文字体回退方案(如'SimHei'),定义横纵坐标标题及整体图题字号。

第5步:渲染显示并验证输出

目的:确认图形落地效果与数据准确性。
动作:调用plt.show()弹出窗口,打印返回的n、bins、patches核对统计区间划分是否正确。

#导入模块
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# 第1步:读取外部数据
data = np.loadtxt('eg1d1data.csv', delimiter=',')

# 第2步:扁平化转换为一维数组
data = np.ravel(data)

# 第3步:设定分组数并调用直方图函数
nbins = 9
n_counts, bin_edges, bar_patches = plt.hist(data, bins=nbins)

# 第4步:配置中文显示与图表标注
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.xlabel("蛋白含量(分组)", fontsize=14)
plt.ylabel("频数", fontsize=14)
plt.title("100名女生测定血清蛋白含量--直方图", fontsize=14)

# 第5步:输出验证参数
print(n_counts, bin_edges, bar_patches)
plt.show()
直方图绘制完成后的结果预览图
程序运行后生成的频数分布直方图效果

注意事项

在较新版本的Matplotlib环境中,normed参数已标记为废弃(Deprecated),替换为density以实现概率密度归一化。若代码需跨版本兼容,建议显式声明density=True。此外,直方图的分组敏感度较高,不同bins设定可能显著改变数据形态解读,实际分析时应结合业务背景多次试算对比。

总结

plt.hist 提供了灵活的参数接口与直观的返回值机制,能够高效完成连续型数据的分布特征提取。掌握其输入规范、返回结构与样式控制方法,即可快速搭建各类统计分析图表。以上就是Python中plt.hist函数参数与返回值用法解释的详细内容,更多关于Matplotlib可视化绘图的数据分析资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表