简介

本文主要总结如何绘制直方图,以及常用的使用场景。

什么是直方图:一个随机变量在各个取值区间有个概率分布,将其绘制出来:x轴为等间隔的取值区间(bins),y轴为该区间的频数(可归一化),即直方图。

接口

Signature:
plt.hist(x,bins=None,range=None,density=None,weights=None,cumulative=False,bottom=None,histtype='bar',align='mid',orientation='vertical',rwidth=None,log=False,color=None,label=None,stacked=False,normed=None,*,data=None,**kwargs,
)
Docstring:
Plot a histogram.Compute and draw the histogram of *x*. The return value is a
tuple (*n*, *bins*, *patches*) or ([*n0*, *n1*, ...], *bins*,
[*patches0*, *patches1*,...]) if the input contains multiple
data.

实例1:正态分布的直方图

实例
生成一个正态分布数据x,然后绘制其直方图。
代码

mu,sigma = 0,1
x = np.random.normal(mu,sigma,size=5000)
n, bins,patches = plt.hist(x,bins=20)
print('n:',n)
print('bins:',bins)
print('patches:',patches)

分析
输入参数:

  • x:即随机变量的取值数据
  • bins:表示将x等间隔分成多少个区间。比如这里分成了20个区间,具体说:它是将[min(x),max(x)]这个范围等间隔分成20个区间(bin),即有21个区间端点。

返回参数:

  • n:各区间(bin)的频数,即20个柱子的高度,
  • bins:21个区间端点。查看数值可以看到第一个端点为min(x),最后一个端点为max(x)。
  • patches:表示20个柱子

结果

n: [  2.   1.  22.  36.  81. 161. 329. 448. 580. 703. 745. 590. 507. 354.217. 115.  73.  25.  10.   1.]
bins: [-3.66700533 -3.30660994 -2.94621455 -2.58581916 -2.22542377 -1.86502838-1.50463298 -1.14423759 -0.7838422  -0.42344681 -0.06305142  0.297343970.65773937  1.01813476  1.37853015  1.73892554  2.09932093  2.459716322.82011172  3.18050711  3.5409025 ]
patches: <a list of 20 Patch objects>

拓展
使用其他输入参数,可以改进直方图。常用的有:

1、指定分隔范围:range
使用场景:1.想让区间数据更清晰;2.扔掉一些区间外的‘坏点’

n, bins,patches = plt.hist(x,bins=20,range=(-3,3))
print(‘bins:’,bins)

结果:

bins: [-3.  -2.7 -2.4 -2.1 -1.8 -1.5 -1.2 -0.9 -0.6 -0.3  0.   0.3  0.6  0.91.2  1.5  1.8  2.1  2.4  2.7  3. ]

2、将频数归一化为概率密度:density
纵轴默认为频数,可归一化为概率密度。即归一化后,所有柱子的面积之和为1,即某区间的概率密度=频数/总数/区间长度,可理解为该区间的平均概率密度(或该区间的中值点的概率密度)
预期结果:归一化后的概率密度与标准的正态分布函数(概率密度函数)是吻合的。

_ ,ax = plt.subplots()
n, bins,patches = ax.hist(x,bins=20,range=(-3,3),density=True)
# 验证正态分布
y1 = scipy.stats.norm.pdf(bins, loc=mu, scale=sigma)
#y2 = 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (bins - mu)**2 / (2 * sigma**2))
ax.plot(bins,y1,'r--')

结果:

python:绘制直方图(Histogram)相关推荐

  1. seaborn可视化displot绘制直方图(histogram)并通过axvline函数在直方图中添加均值(mean)竖线(自定义均值竖线色彩)

    seaborn可视化displot绘制直方图(histogram)并通过axvline函数在直方图中添加均值(mean)竖线(自定义均值竖线色彩) 目录

  2. python画直方图代码-Python绘制直方图及子图的方法分析(代码示例)

    本篇文章给大家带来的内容是关于Python绘制直方图及子图的方法分析(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.直方图的绘制也需要用到matplotlib下的py ...

  3. python画直方图成绩分析-使用Python绘制直方图和正态分布曲线

    本文主要介绍两个内容: 如何使用记事本生成包含某一数据集的CSV文件: 如何使用Python绘制给定数据集的直方图和正态分布曲线. 1. 使用记事本创建CSV文件 ① 新建一个文本文件,打开后输入数据 ...

  4. python绘制直方图

    用两列数据绘制直方图 #coding=gbkimport xlwings as xw import pandas as pd import matplotlib.pyplot as plt#pd.se ...

  5. python导入数据画直方图加正态曲线_使用Python绘制直方图和正态分布曲线

    原博文 2020-03-20 22:01 − 本文主要介绍两个内容: 如何使用记事本生成包含某一数据集的CSV文件: 如何使用Python绘制给定数据集的直方图和正态分布曲线. 1. 使用记事本创建C ...

  6. python绘制直方图根据不同分类_小猿圈Python开发之绘制频率分布直方图示例

    现在人工智能越来越实用,甚至深入到千家万户,随之而来的就是python技术的火爆,今天小猿圈python讲师为你讲解一下绘制频率分布直方图示例,希望对于刚刚自学python的你有一定的帮助. 项目中在 ...

  7. python绘制直方图显示数字_Python实现绘制双柱状图并显示数值功能示例

    本文实例讲述了Python实现绘制双柱状图并显示数值功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 import matplotlib.py ...

  8. python绘制直方图plt_Python:matplotlib绘制直方图

    使用hist方法来绘制直方图: 绘制直方图,最主要的是一个数据集data和需要划分的区间数量bins,另外你也可以设置一些颜色.类型参数: plt.hist(np.random.randn(1000) ...

  9. Python绘制直方图案例一则

    参考代码: 运行结果: ---------董付国老师Python系列教材-------- 1)<Python程序设计(第2版)>(2018年7月第7次印刷) 2)<Python可以这 ...

  10. python绘制直方图(成绩可视化),turtle绘图

    1.成绩可视化,输入成绩,绘制直方图 lis_score=[] n=int(input("输入学生人数:")) while n<1:     print("学生人数 ...

最新文章

  1. OpenCV中SVM的使用
  2. MySQL命令梳理_MySQL操作命令梳理(1)
  3. uoj#188. 【UR #13】Sanrd(Min_25筛)
  4. 新建子窗体 1124
  5. python拼写错误20几分钟怎么办_Python | 21行轻松搞定拼写检查器
  6. uuid会重复吗_UUID的版本你知道吗
  7. 浅谈 js 字符串之神奇的转义
  8. 软件技术方案_广东省汕尾市海丰陈氏数字化网络化全县族谱统修工作方案(草案)...
  9. Mysql安装包安装教程(亲测简单高效版)
  10. PHP开发入门 | 简单的PHP新闻管理系统案例
  11. war包的解压和打包为原来的war包的方法
  12. AI语音声控智能按摩椅方案/案列/APP/小程序/网站
  13. <<视觉问答>>2022:CLIP Models are Few-shot Learners: Empirical Studies on VQA and Visual Entailment
  14. Bug的级别,按照什么划分
  15. 蓝牙协议开发常见词汇缩写
  16. self与static的浅薄理解
  17. 织梦如何添html5播放器,织梦ckplayer视频播放器插件安装使用教程
  18. html nav文字位置,HTML: nav 标签
  19. 主线程和子线程的关系(讨论主线程结束,子线程是否要回收)
  20. 【力扣周赛】第293场周赛

热门文章

  1. Python|模拟文件系统
  2. 极致真实的CE游戏引擎
  3. CentOS 8系统启用BBR加速
  4. CentOS7 配置BBR加速
  5. 杭州一行,感悟颇多。初闻不知曲中意,再见已然操千曲。
  6. python屏幕取词getword_GetWord Demo(屏幕取词软件)
  7. 以太坊创世区块与链配置载入分析
  8. 导电滑环的几种接线方式
  9. 查看pip支持的文件名和版本(使用命令行)
  10. win10 安装虚拟机