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

目录
  • 1.关于直方图
  • 2.plt.hist()
  • 3. 绘制一幅简单的 频数 分布直方图
  • 4. 绘制一幅 频率 分布直方图
  • 5. 累积分布直方图(水平方向)

1.关于直方图

直方图 也称 质量分布图,虽然看起来像柱状图,

实际上区别又很大。直方图通常横轴表示数据类型,纵轴表示各数据类型的分布情况。

直方图又可以分为频数分布直方图和频率分布直方图。其绘制方法并无多少差异,只是描述的事件有所不同。频数分布直方图描述的是某事件的数量,而频率分布则描述的是其发生的频率。

而关于频率分布直方图,又可以理解为是“密度图”的一种。频率分布直方图 和 密度图 都可以用来描述事件的概率分布,其中频率分布直方图描述的是离散型随机变量的概率分布,而密度图则描述的是连续型随机变量的概率分布。

2.plt.hist()

绘制直方图通过plt.hist()方法实现,其常用的参数有:

x 数据集

bins ------------- 统计数据的区间分布。可以是一个元素为数值的列表,也可以是一个数值。是一个数值的时候可以配合range参数使用。

range ----------- 元组类型,显示的区间。

当设置区间分布使用数值型的bins和range参数设定时:range确定一个范围,传入形式是一个元组(注意不是range范围对象),左右端点值都可取。数值型的bins表示将该范围分成的份数(等分)。

density --------- 布尔型,显示频率统计结果。默认为None(相当于False),设为False不显示频率统计结果;设为True则显示频率统计结果,即绘制出的图像由频数分布直方图变为频率分布直方图。

histtype -------- 可选参数,即直方图的类型。默认为bar,即绘制出的“柱状”条形。还可以设置为barstacked、step、stepfilled。

align -------------可选参数,控制柱状图的水平分布,设置值为left、mid 或 right,默认值为mid,也推荐使用mid。left和right会产生部分的空白区域。

log --------------- 布尔类型,默认为False,即y轴是否选择指数刻度。

stacked --------- 布尔类型,默认为False,表示是否为堆积柱状图。

edgecolor------- 设定边沿颜色

facecolor-------- 可以用来设定直方图的颜色,也可以简写为color。

orientation-------直方图的方向,默认为竖直方向上的(‘vertical’),设为’horizontal’则表示水平方向上的。

cumulative------默认为False,表示不累积。如果为True则设置累积分度直方图。

3. 绘制一幅简单的 频数 分布直方图

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
# 设定随机数种子为30
np.random.seed(30)
data = np.random.randint(0, 100, 100)
plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor='#ffff00', edgecolor='#FF0000')
plt.xlabel('X指标')
plt.ylabel('样本个数')
plt.title('X指标频数分布直方图')
plt.show()

4. 绘制一幅 频率 分布直方图

将density设置为True即可·。

此外我们再修改一些细节,将histtype参数设置为stepfilled(梯状且填充)。

并把y轴的标签由“样本个数”改为“样本频率”。

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
np.random.seed(30)
data = np.random.randint(0, 100, 100)
plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor='#ffff00', edgecolor='#FF0000', density=True, histtype='stepfilled')
plt.xlabel('X指标')
plt.ylabel('样本频率')
plt.title('X指标频数分布直方图')
plt.show()

图像效果如下:

5. 累积分布直方图(水平方向)

增加参数cumulative=True, orientation=‘horizontal’。

此外,因为图像变成了水平方向,所以也需要把x、y轴标签互换并稍作调整。

这里设置区间分布使用数值型的bins和range参数设定,范围为0-100,区间分割为10等份。

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
np.random.seed(30)
data = np.random.randint(0, 100, 100)
plt.hist(data, bins=10, range=(0, 100), facecolor='#ffff00', edgecolor='#FF0000', density=True, cumulative=True, orientation='horizontal')
plt.xlabel('样本累积频率')
plt.ylabel('X指标')
plt.title('X指标频数分布直方图')
plt.show()

图像效果如下:

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

(0)

相关推荐

  • python绘制饼图和直方图的方法

    本文实例为大家分享了python绘制饼图和直方图的具体代码,供大家参考,具体内容如下 #饼图,常与结构分析结合使用 import pandas import numpy import matplotlib import matplotlib.pyplot as plt import matplotlib.font_manager as font_manager #导入数据 plot_pie=pandas.read_csv('D://Python projects//reference data/

  • python绘制简单直方图的方法

    直方图,又称质量分布图,是一种统计报告图,由一系列高度不等的纵条或线段表示数据分布情况.用横轴表示数据类型,纵轴表示分布情况.直方图是数值数据分布的精确图形表示.绘制连续性的数据,展示一组或多组数据的分布状况. 直方图的绘制和条形图有些相似,需要把plt.bar()修改成plt.hist(),更改图形的拟合方式,即可绘制直方图.例如你获取到了250部电影的数量,他们的时长都在80-140分钟,如何呈现电影的时长分布情况呢? 老规矩,上代码: '''     组数=极差/组距 ''' from m

  • python利用matplotlib库绘制饼图的方法示例

    介绍 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. matplotlib的安装方法可以点击这里 这篇文章给大家主要介绍了python用matplotlib绘制饼图的方法,话不多说,下面来看代码

  • 详解python OpenCV学习笔记之直方图均衡化

    本文介绍了python OpenCV学习笔记之直方图均衡化,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/d5/daf/tutorial_py_histogram_equalization.html 考虑一个图像,其像素值仅限制在特定的值范围内.例如,更明亮的图像将使所有像素都限制在高值中.但是一个好的图像会有来自图像的所有区域的像素.所以你需要把这个直方图拉伸到两端(如下图所给出的),这就是直方图均衡的作用(用简单的话说).这通常会改善图像的

  • Python+OpenCV绘制灰度直方图详解

    1.直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比.图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征. 图像灰度直方图: 一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征.图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少.图像的灰度直方图是灰度级的函数,描述的是图像中

  • 详解用Python为直方图绘制拟合曲线的两种方法

    直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可以很直观的看出数据分布的形状.中心位置以及数据的离散程度等. 在python中一般采用matplotlib库的hist来绘制直方图,至于如何给直方图添加拟合曲线(密度函数曲线),一般来说有以下两种方法. 方法一:采用matplotlib中的mlab模块 mlab模块是Python中强大的3D作图工具,立体感效果极佳.在这里使用mlab可以跳出直方图二维平面图形的限制,在此基础上再添加一条曲线.在这里,

  • python数字图像处理实现直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histogram(image,nbins=256) 在numpy包中,也提供了一个计算直方图的函数histogram(),两者大同小义. 返回一个tuple(hist, bins_center), 前一个数组是直方图的统计量,后一个数组是每个bin的中间值 import numpy as np from s

  • 教你利用Python玩转histogram直方图的五种方法

    直方图 直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图. 本篇博主将要总结一下使用Python绘制直方图的所有方法,大致可分为三大类(详细划分是五类,参照文末总结): 纯Python实现直方图,不使用任何第三方库 使用Numpy来创建直方图总结数据 使用matplotlib,pandas,seaborn绘制直方图 下面,我们来逐一介绍每种方法的来龙去脉. 纯Py

  • Python通过matplotlib画双层饼图及环形图简单示例

    (1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示(python3.X版本): vals = [1, 2, 3, 4]#创建数据系列 fig, ax = plt.subplots()#创建子图 labels = 'A', 'B', 'C', 'D' colors = ['yellowgreen', 'gold', 'lightskyblue', '

  • Python绘制频率分布直方图的示例

    项目中在前期经常要看下数据的分布情况,这对于探究数据规律非常有用.概率分布表示样本数据的模样,长的好不好看如果有图像展示出来就非常完美了,使用Python绘制频率分布直方图非常简洁,因为用的频次非常高,这里记录下来.还是Python大法好,代码简洁不拖沓~ 如果数据取值的范围跨度不大,可以使用等宽区间来展示直方图,这也是最常见的一种:如果数据取值范围比较野,也可以自定义区间端点,绘制图像,下面分两种情况展示 1. 区间长度相同绘制直方图 #-*- encoding=utf-8 -*- impor

随机推荐