文章目录

  • 直方图简介
  • 直方图的应用场景
  • 绘制直方图
  • 案例

直方图简介

直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的条纹表示数据分
布的情况。一般用横轴表示数据类型,纵轴表示分布情况。

直方图是数值数据分布的精确图形表示。为了构建直方图,第一步是将值的范围分段,即将整个值
的范围分成一系列间隔,然后计算每个间隔中有多少值。这些值通常被指定为连续的,不重叠的变
量间隔。间隔必须相邻,并且通常是(但不是必须的)相等的大小。

直方图的应用场景

  1. 显示各组数据数量分布的情况。
  2. 用于观察异常或孤立数据。
  3. 抽取的样本数量过小,将会产生较大误差,可信度低,也就失去了统计的意义。因此,样本数
    不应少于50个。

绘制直方图

直方图的绘制方法,使用的是 plt.hist 方法来实现,这个方法的参数以及返回值如下:

参数:

  1. x :数组或者可以循环的序列。直方图将会从这组数据中进行分组。
  2. bins :数字或者序列(数组/列表等)。如果是数字,代表的是要分成多少组。如果是序
    列,那么就会按照序列中指定的值进行分组。比如 [1,2,3,4] ,那么分组的时候会按照三个
    区间分成3组,分别是 [1,2)/[2,3)/[3,4] 。
  3. range :元组或者None,如果为元组,那么指定 x 划分区间的最大值和最小值。如
    果 bins 是一个序列,那么 range 没有有没有设置没有任何影响。
  4. density :默认是 False ,如果等于 True ,那么将会使用频率分布直方图。每个条形表示
    的不是个数,而是 频率/组距 (落在各组样本数据的个数称为频数,频数除以样本总个数为频
    率)。
  5. cumulative :如果这个和 density 都等于 True ,那么返回值的第一个参数会不断的累加,
    最终等于 1 。
  6. 其他参数:请参考:matplotlib.pyplot.hist官方文档。

返回值:

  1. n :数组。每个区间内值出现的个数,如果 density=True ,那么这个将返回的是 频率/组 距 。
  2. bins :数组。区间的值。
  3. patches :数组。每根条的对象,类型是 matplotlib.patches.Rectangle 。

案例

比如有一组电影票房时长,想要看下这组票房时长的数据,那么可以通过以下代码来实现:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pddurations = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107,
114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136
, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126
, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105
, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136,
118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,
156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118,
139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115
, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100
, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110,
118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133,
137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144,
110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112
, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
plt.figure(figsize=(15,5))
nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k')
plt.xticks(bins,bins)
for num,bin in zip(nums,bins):plt.annotate(num,xy=(bin,num),xytext=(bin+1.5,num+0.5))
plt.show()


另外,也可以通过 density=True ,来实现频率分布直方图。示例代码如下:

plt.figure(figsize=(15,5))
nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True)
plt.xticks(bins,bins)
for num,bin in zip(nums,bins):plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))

而如果想要让 nums 的总和为 1 ,那么就需要设置 cumulative=True 参数,示例代码如下:

plt.figure(figsize=(15,5))
nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True,cumulative=True)
plt.xticks(bins,bins)
for num,bin in zip(nums,bins):plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))

为便于学习交流草创了一个q群: Python炼丹大师交流群
后端 爬虫 数据分析 机器学习等和python相关的都可以在此畅所欲言
编程资源:编程学习资源传送门

文章到此结束,但愿本文能对你有一点点帮助,欢迎三连,点个赞,收个藏啥的,有问题的尽管砸来,我有故事你有酒,好好交流不分手!下次见!

Matplotlib之直方图绘制相关推荐

  1. python绘制直方图-python matplotlib库直方图绘制详解

    例题:假设你获取了250部电影的时长(列表a中),希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据? 一些概念及问题: 把数据分 ...

  2. Matplotlib常见图形绘制(折线图、散点图、柱状图、直方图、饼图)

    Matplotlib能够绘制折线图.散点图.柱状图.直方图.饼图. 我们需要知道不同的统计图的意义,以此来决定选择哪种统计图来呈现我们的数据. 1 常见图形种类及意义 折线图:以折线的上升或下降来表示 ...

  3. python excel 图表 matplotlib_Python数据可视化:matplotlib 常见图表绘制——直方图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:斑点鱼 matplotlib常见图表绘制--直方图 series.h ...

  4. Python dataframe绘制饼图_【python可视化】:matplotlib:常见图表绘制——面积图、填图、饼图...

    •本文字数:约620字•阅读时长:约2分钟•难度:1颗星 斑点鱼将Matplotlib分为五部分: 图表窗口设置.图表基本元素及图表输出.图表样式参数.子图创建.常见图表绘制 本文讲第五部分:matp ...

  5. 直方图绘制与直方图均衡化实现

    一,直方图的绘制 1.直方图的概念: 在图像处理中,经常用到直方图,如颜色直方图.灰度直方图等. 图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所 占的多少. 图像的灰 ...

  6. matplotlib 常用图形绘制与官方文档

    matplotlib 常用图形绘制与官方文档 matplotlib.org Python库matplotlib 图形绘制 官方教程目录 matplotlib.pyplot matplotlib.pyp ...

  7. python读取csv数据画直方图_python 中直方图绘制

    一.直方图绘制参数详解 1.plt.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom= ...

  8. Matplotlib使用和绘制二维图表

    目录 1 Matplotlib简介 1.1 什么是Matplotlib - 画二维图表的python库 1.2 为什么要学习Matplotlib - 画图 1.3 实现一个简单的Matplotlib画 ...

  9. 数据可视化库 matplotlib 入门 8——绘制文本与数学表达式、图形处理

    Matplotlib 库使用入门8 绘制文本与数学表达式 绘制文本的函数与功能 绘制数学表达式 图像处理 在前面关于 matploblib 的文章中,笔者分别介绍了: matplotlib 库的安装与 ...

  10. python Numpy 的基础用法以及 matplotlib 基础图形绘制

    python Numpy 的基础用法以及 matplotlib 基础图形绘制 1. 环境搭建 1.1 Anaconda ​ anaconda 集成了数据分析,科学计算相关的所有常用安装包,比如Numo ...

最新文章

  1. java类安卓app 简介_android.app.Activity 的介绍
  2. [QUICK UI] 有哪些目前流行的前端框架
  3. LetCode-MSSQL查找重复的电子邮箱
  4. [.NET] 《Effective C#》快速笔记(一)- C# 语言习惯
  5. 操作系统实验ucore lab1
  6. 展望下未来的计算机400字,展望未来作文400字
  7. 2020年GitHub 上那些优秀Android开源库,这里是Top10!
  8. 家庭版取消灰色勾选加密内容以便保护数据的方法
  9. coolpad大神f2Android,酷派大神f2致命缺点和优点有什么【图文】
  10. 马赛克与反马赛克技术
  11. 公司上市有几种方式?
  12. 新浪微博开放平台账号申请(基于dcloud开发)
  13. XTM计算机辅助翻译,计算机辅助翻译原理与实践
  14. 芋道 Spring Boot API 接口文档 Swagger 入门
  15. Monkey测试手机BUG重现及解决方法
  16. 探索ESP8285(2)搭建Windows版MQTT服务器
  17. pycharm中安装ctypes模块
  18. SSH使用及协议分析。
  19. arcgis制作地图册
  20. 通过TSS软件栈使用TPM——获取并改变TPM寄存器-学习笔记1

热门文章

  1. 计算机扩大C盘分区容量,教你在保留数据的情况下,如何把C盘容量无限扩大!...
  2. python拦截广告弹窗_通过python实现弹窗广告拦截过程详解
  3. Flash实例教程:AS3代码简单表现照片底片效果
  4. matlab离散系统的频率响应,离散系统频率响应和零极点分布实验报告
  5. 项目vite1.0升级到2.0打包遇到Some chunks are larger问题如何解决
  6. 页面无法自动播放音频的解决方案
  7. c++中类的private的static变量实现类对象的数据共享
  8. 一杯免费咖啡引发的ERP上云思考
  9. png在ai转为路径_ai怎么把png转换为路径
  10. 书摘—吃我吃我:38种改善情绪和恢复精力的神奇食材