Python matplotlib.pyplot.hist()绘制直方图的方法实例

目录
  • 一、matplotlib.pyplot.hist()语法
  • 二、绘制直方图
    • ①绘制简单直方图
    • ②:各个参数绘制的直方图
      • (1)histtype参数(设置样式bar、barstacked、step、stepfilled)
      • (2)range参数(指定直方图数据的上下界,默认包含绘图数据的最大值和最小值(范围))
      • (3)orientation参数 (设置直方图的摆放位置,vertical垂直方向 horizontal水平方向,默认值:vertical垂直方向)
      • (4)density参数(bool值,True:将坐标轴转化为密度刻度,默认值:None)
      • (5)weights参数(为每个数据点设置权重)
      • (6)cumulative参数(bool值,是否需要计算累计频数或频率,默认值:False)
      • (7)bottom参数(为直方图添加基准线)
      • (8)align参数(设置条形边界值的对其方式,mid、left、right,默认值:mid)
      • (9)rwidth参数(设置直方图条形宽度的百分比)
      • (10)log参数(bool值,对绘图数据进行log变换 默认值:False)
      • (11)stacked参数(bool值,当有多个数据时,是否需要将直方图呈堆叠摆放,默认值:False水平摆放)
      • (12)直方图所有参数展示:
  • 三、在直方图上画折线图
  • 总结

一、matplotlib.pyplot.hist()语法

hist(x, bins=None, range=None, density=False,weights=None, cumulative=False,
bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None,
 log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)
plt.hist(
    x,# 指定要绘制直方图的数据
    bins,# 设置长条形的数目
    range,# 指定直方图数据的上下界,默认包含绘图数据的最大值和最小值(范围)
    density=True or False, # 如果"True",将y轴转化为密度刻度 默认为None
    weights,# 该参数可为每一个数据点设置权重
    cumulative=True or False,# 是否需要计算累计频数或频率 默认值False
    bottom=0, # 可以为直方图的每个条形添加基准线,默认为0
    histtype={'bar', 'barstacked', 'step', 'stepfilled'} # 设置样式
               # bar柱状形数据并排,默认值。
               # barstacked在柱状形数据重叠并排(相同的在一起)
               # step柱状形颜色不填充
               # stepfilled填充的线性
    align='mid' or 'left' or 'right', # 设置条形边界值的对其方式,默认为mid,除此还有'left'和'right'
    orientation={'vertical', 'horizontal'},# 设置直方图的摆放方向,默认为垂直方向vertical
    rwidth,# 设置直方图条形宽度的百分比
    log=True or False,# 是否需要对绘图数据进行log变换 默认值False
    color='r',# 设置直方图的填充色
    label, # 设置直方图的标签
    stacked=True or False, # 当有多个数据时,是否需要将直方图呈堆叠摆放,默认False水平摆放;
    facecolor,# 设置长条形颜色(和color效果一致,设置color就不用再设置facecolor)
    edgecolor,# 设置边框的颜色
    alpha # 设置透明度
)
# 注意组距,得到满意的展示效果
# 注意y轴所代表的变量是频数还是频率

二、绘制直方图

①绘制简单直方图

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

# bins设置长条形的数目
plt.hist(data,bins=10)

plt.show()

②:各个参数绘制的直方图

(1)histtype参数(设置样式bar、barstacked、step、stepfilled)

1. bar:柱状形数据并排(因为bar是默认值,可以不写)

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10)

plt.show()

 2. barstacked:在柱状形数据重叠并排(相同的在一起)

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,histtype='barstacked')

plt.show()

 3. step:柱状形颜色不填充 

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,histtype='step')

plt.show()

 4. stepfilled:生成一个默认填充的线图

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,histtype='stepfilled')

plt.show()

(2)range参数(指定直方图数据的上下界,默认包含绘图数据的最大值和最小值(范围))

不想显示数据全部范围,只想查看数据某一个范围内的数据。(例:下图数据范围为140~180之间,只想查看150~170之间的数据)

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,histtype='bar',range=(150,170))

plt.show()

(3)orientation参数 (设置直方图的摆放位置,vertical垂直方向 horizontal水平方向,默认值:vertical垂直方向)

垂直方向(默认垂直,可以不写):

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10)

plt.show()

horizontal水平方向:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,orientation='horizontal')

plt.show()

(4)density参数(bool值,True:将坐标轴转化为密度刻度,默认值:None)

直方图为垂直方向时,观察y轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,density=True)

plt.show()

直方图为水平方向时,观察x轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,orientation='horizontal',density=True)

plt.show()

(5)weights参数(为每个数据点设置权重)

直方图为垂直方向时,观察y轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,weights=data)

plt.show()

直方图为水平方向时,观察x轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,orientation='horizontal',weights=data)

plt.show()

(6)cumulative参数(bool值,是否需要计算累计频数或频率,默认值:False)

频数:指事件发生的次数

频率:指次数占总次数n的比例

频率=频数/n

直方图为垂直方向时:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,cumulative=True)

plt.show()

直方图为水平方向时:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,orientation='horizontal',cumulative=True)

plt.show()

(7)bottom参数(为直方图添加基准线)

直方图为垂直方向时,观察y轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,bottom=170)

plt.show()

直方图为水平方向时,观察x轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,orientation='horizontal',bottom=170)

plt.show()

(8)align参数(设置条形边界值的对其方式,mid、left、right,默认值:mid)

mid(默认值可以不写):

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10)

plt.show()

left:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,align='left')

plt.show()

right:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,align='right')

plt.show()

(9)rwidth参数(设置直方图条形宽度的百分比)

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,rwidth=0.5)

plt.show()

(10)log参数(bool值,对绘图数据进行log变换 默认值:False)

直方图为垂直方向时,观察y轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,log=True)

plt.show()

直方图为水平方向时,观察x轴:

import matplotlib.pyplot as plt
import numpy as np

data=np.random.randint(140,180,200)

plt.hist(data,bins=10,orientation='horizontal',log=True)

plt.show()

(11)stacked参数(bool值,当有多个数据时,是否需要将直方图呈堆叠摆放,默认值:False水平摆放)

stacked=False时:(水平摆放)

import matplotlib.pyplot as plt
import numpy as np

x=np.random.randint(140,180,200)
y=np.random.randint(140,180,200)

plt.hist([x,y], bins=10)

plt.show()

stacked=True时:(堆叠摆放)

import matplotlib.pyplot as plt
import numpy as np

x=np.random.randint(140,180,200)
y=np.random.randint(140,180,200)

plt.hist([x,y], bins=10,stacked=True)

plt.show()

(12)直方图所有参数展示:

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['FangSong']

fig=plt.figure(figsize=(8,8))
data=np.random.randint(140,180,200)

# data数据
# bins设置长条形的个数
# histtype设置样式 barstacked:在柱状形数据重叠并排(相同的在一起)
# range显示范围
# cumulative累计频数
# align设置边界对齐值为中心对齐
# orientation设置摆放方向为horizontal水平方向
# rwidth设置长条形宽度的百分比为20
# color设置长条形的填充颜色为#FFB6C1
# label设置直方图的标签
# edgecolor设置长条形边框线为#FFD700
# alpha设置长条形的透明度为0.5
# density=True 长条形呈水平方向:density将x轴转换为密度刻度  长条形呈垂直方向:density将y轴转换为密度刻度
# weights=data为每个数据点设置权重
# bottom设置基准线为15000
# log=True是否对数据进行log转换
plt.hist(data,bins=10,histtype='barstacked',range=(140,170),cumulative=True,align='mid',orientation='horizontal',rwidth=20,color='#FFB6C1',
        label='数量',edgecolor='#FFD700',alpha=0.5,weights=data,bottom=10000,log=False)

plt.xticks(size=20) # x轴刻度值大小
plt.yticks(size=20) # y轴刻度值大小

plt.title('hist',size=30) # 设置直方图标签
plt.xlabel('x轴',size=15) # 设置x轴标签
plt.ylabel('y轴',size=20) # 设置y轴标签

plt.rcParams.update({'font.size':20})  # 修改图例字体大小

plt.legend()
plt.show()

三、在直方图上画折线图

import matplotlib.pyplot as plt
import numpy as np

x=np.random.normal(100,15,10000)
y=np.random.normal(80,15,10000)

# density=True设置为密度刻度
n1, bins1, patches1 = plt.hist(x, bins=50,  density=True, color='#00B8B8', alpha=1)
n2, bins2, patches2 = plt.hist(y, bins=50,  density=True, color='r', alpha=0.2)

plt.plot(bins1[:-1],n1,':',lw=3)
plt.plot(bins2[:-1],n2,'--',lw=3)

plt.show()

总结

到此这篇关于Python matplotlib.pyplot.hist()绘制直方图的文章就介绍到这了,更多相关matplotlib.pyplot.hist()绘制直方图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于Python+Matplotlib实现直方图的绘制

    目录 1.关于直方图 2.plt.hist() 3. 绘制一幅简单的 频数 分布直方图 4. 绘制一幅 频率 分布直方图 5. 累积分布直方图(水平方向) 1.关于直方图 直方图 也称 质量分布图,虽然看起来像柱状图, 实际上区别又很大.直方图通常横轴表示数据类型,纵轴表示各数据类型的分布情况. 直方图又可以分为频数分布直方图和频率分布直方图.其绘制方法并无多少差异,只是描述的事件有所不同.频数分布直方图描述的是某事件的数量,而频率分布则描述的是其发生的频率. 而关于频率分布直方图,又可以理解为

  • Python+matplotlib绘制条形图和直方图

    目录 摘要 一.bar()函数 二,hist()函数 三.数据统计 摘要 先介绍条形图直方图,然后用随机数生成一系列数据,保存到列表中,最后统计出相关随机数据的概率并展示 前述介绍了由点进行划线形成的拆线图和散点形成的曲线图,连点成线,主要用到了matplotlib中的plot()和scatter()这个函数,但在实际生活工作中,不仅有折线图,还经常会出现月份经济数据对比图,身高统计图等,制成图表就很容易对比看出差异. 下面用matplotlib中bar()函数和hist()来实现条形图和直方图

  • Python基于matplotlib绘制栈式直方图的方法示例

    本文实例讲述了Python基于matplotlib绘制栈式直方图的方法.分享给大家供大家参考,具体如下: 平时我们只对一组数据做直方图统计,这样我们只要直接画直方图就可以了. 但有时候我们同时画多组数据的直方图(比如说我大一到大四跑大学城内环的用时的分布),大一到大四用不同颜色的直方图,显示在一张图上,这样会很直观. #!/usr/bin/env python # -*- coding: utf-8 -*- #http://www.jb51.net/article/100363.htm # nu

  • python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】

    本文实例讲述了python matplotlib模块基本图形绘制方法.分享给大家供大家参考,具体如下: matplotlib模块是python中一个强大的绘图模块 安装 pip  install matplotlib 首先我们来画一个简单的图来感受它的神奇 import numpy as np import matplotlib.pyplot as plt import matplotlib zhfont1=matplotlib.font_manager.FontProperties(fname

  • Python matplotlib绘制灰度和彩色直方图

    目录 一.Matplotlib.Pyplot简介 1.Matplotlib 2.Pyplot 二.灰度直方图 1.主要函数 2.实现代码 3.效果示例 三.彩色直方图 1.实现代码 2.效果示例 一.Matplotlib.Pyplot简介 1.Matplotlib Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式. Matplotlib 可以用来绘制各种静态,动态,交互式的图表. Matplotlib 是一个非常强大的 Python 画

  • Matplotlib直方图绘制中的参数bins和rwidth的实现

    目录 情景引入 bins 参数 stacked参数 rwidth 参数 引用 情景引入 我们在做机器学习相关项目时,常常会分析数据集的样本分布,而这就需要用到直方图的绘制. 在Python中可以很容易地调用matplotlib.pyplot的hist函数来绘制直方图.不过,该函数参数不少,有几个绘图的小细节也需要注意. 首先,我们假定现在有个联邦学习的项目情景.我们有一个样本个数为15的图片数据集,样本标签有4个,分别为cat, dog, car, ship.这个数据集已经被不均衡地划分到4个任

  • Python利用 matplotlib 绘制直方图

    目录 1. 直方图概述 1.1什么是直方图? 1.2直方图使用场景 1.3直方图绘制步骤 1.4案例展示 2. 直方图属性 2.1设置颜色 2.2设置长条形数目 2.3设置透明度 2.4设置样式 3. 添加折线直方图 4. 堆叠直方图 5. 不等距直方图 6. 多类直方图 复习回顾: 经过前面对 matplotlib 模块从底层架构.基本绘制步骤等学习,我们已经学习了折线图.柱状图的绘制方法. matplotlib 模块基础:对matplotlib 模块常用方法进行学习 matplotlib 模

  • python matplotlib库直方图绘制详解

    例题:假设你获取了250部电影的时长(列表a中),希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据? 一些概念及问题: 把数据分为多少组进行统计 组数要适当,太少会有较大的统计误差,太多规律不明显 组数:将数据分组,共分为多少组 组距:指每个小组的两个端点的距离 组数:极差 / 组距,也就是 (最大值-最小值)/ 组距 频数分布直方图与频率分布直方图,hist()方法需增加参数normed 注意:一般来说能够使用plt.hi

  • Python matplotlib.pyplot.hist()绘制直方图的方法实例

    目录 一.matplotlib.pyplot.hist()语法 二.绘制直方图 ①绘制简单直方图 ②:各个参数绘制的直方图 (1)histtype参数(设置样式bar.barstacked.step.stepfilled) (2)range参数(指定直方图数据的上下界,默认包含绘图数据的最大值和最小值(范围)) (3)orientation参数 (设置直方图的摆放位置,vertical垂直方向 horizontal水平方向,默认值:vertical垂直方向) (4)density参数(bool值

  • python OpenCV学习笔记之绘制直方图的方法

    本篇文章主要介绍了python OpenCV学习笔记之绘制直方图的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 官方文档 – https://docs.opencv.org/3.4.0/d1/db7/tutorial_py_histogram_begins.html 直方图会让你对图像的强度分布有一个全面的认识.它是一个在x轴上带有像素值(从0到255,但不总是),在y轴上的图像中对应的像素数量的图. 这只是理解图像的另一种方式.通过观察图像的直方图,你可以直

  • opencv python统计及绘制直方图的方法

    灰度直方图概括了图像的灰度级信息,简单的来说就是每个灰度级图像中的像素个数以及占有率,创建直方图无外乎两个步骤,统计直方图数据,再用绘图库绘制直方图. 统计直方图数据 首先要稍微理解一些与函数相关的术语,方便理解其在python3库中的应用和处理 BINS: 在上面的直方图当中,如果像素值是0到255,则需要256个值来显示直 方图.但是,如果不需要知道每个像素值的像素数目,只想知道两个像素值之间的像素点数目怎么办?例如,想知道像素值在0到15之间的像素点数目,然后是16到31...240到25

  • 不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决

    前言 本文主要给大家介绍了关于不同版本中Python matplotlib.pyplot.draw()界面绘制异常的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 在 Ubuntu系统上进行如下配置: $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install python-dev $ sudo apt-get install python-pip $ sudo pip install --u

  • Python matplotlib如何简单绘制不同类型的表格

    目录 载入库 一.折线图 二.散点图 三.条形图 四.柱状图 五.饼状图 六.直方图 七.箱线图 last but not list.如何给x.y轴坐标打上标签 END.如何叠加绘制图像 总结 载入库 绘制表格我们需要用到python库中的matplotlib库 import matplotlib.pyplot as plt 一.折线图 # 绘制一条线是,x轴可以省略,默认用y轴数据的索引替代 plt.plot([0, 2, 4, 6, 8]) # 默认Y轴坐标,x轴按12345--算 plt.

  • python+matplotlib实现动态绘制图片实例代码(交互式绘图)

    本文研究的主要是python+matplotlib实现动态绘制图片(交互式绘图)的相关内容,具体介绍和实现代码如下所示. 最近在研究动态障碍物避障算法,在Python语言进行算法仿真时需要实时显示障碍物和运动物的当前位置和轨迹,利用Anaconda的Python打包集合,在Spyder中使用Python3.5语言和matplotlib实现路径的动态显示和交互式绘图(和Matlab功能类似). Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统

  • python matplotlib.pyplot.plot()参数用法

    如下所示: matplotlib.pyplot.plot(*args, **kwargs) 绘制线条或标记的轴.参数是一个可变长度参数,允许多个X.Y对可选的格式字符串. 例如,下面的每一个都是合法的: plot(x, y) #plot x, y使用默认的线条样式和颜色 plot(x, y, 'bo') #plot x,y用蓝色圆圈标记 plot(y) #plot y用x作为自变量 plot(y, 'r+') #同上,但是是用红色作为标记 如果x或y是2维的,那么相应的列将被绘制. x.y的任意

  • Python matplotlib可视化之绘制韦恩图

    目录 本文速览 1.matplotlib_venn (1)2组数据venn图 (2)3组数据venn图 2.pyvenn 2组数据venn 3组数据venn 4组数据venn 5组数据venn 6组数据venn 本文速览 2组数据venn 3组数据venn 4组数据venn 5组数据venn图 6组数据venn python中Matplotlib并没有现成的函数可直接绘制venn图, 不过已经有前辈基于matplotlib.patches及matplotlib.path开发了两个轮子: matp

  • python matplotlib imshow热图坐标替换/映射实例

    今天遇到了这样一个问题,使用matplotlib绘制热图数组中横纵坐标自然是图片的像素排列顺序, 但是这样带来的问题就是画出来的x,y轴中坐标点的数据任然是x,y在数组中的下标, 实际中我们可能期望坐标点是其他的一个范围,如图: 坐标点标出来的是实际数组中的下标,而我希望纵坐标是频率,横坐标是其他的范围 plt.yticks(np.arange(0, 1024, 100), np.arange(10000, 11024, 100)) #第一个参数表示原来的坐标范围,100是每隔100个点标出一次

  • matplotlib.pyplot画图并导出保存的实例

    我就废话不多说了,直接上代码吧! import pandas as pd import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() bar_positions=[1,2,3,4] bar_heights=[1,2,3,4] print(np.arange(len([2,2,3,4,5])+1)) ax.bar(np.arange(len([2,2,3,4,5])),[1,2,3,4,5], 0.5)#设

随机推荐