一个简单的直方图可以直观地展示数据的分布,包括数值分布的区间、密度和形状

在实际的工作过程中,我们可能需要对数据进行数学建模统计分析,这些数据处理技术往往基于数据符合的某些假设,而直方图是检查数据最好的选择之一。

下面通过 NumPy 模块提供的随机数据生成函数,产生符合正态分布的随机数据,并以它为样例绘制直方图。

import numpy as np
import matplotlib.pyplot as pltrandn_data = np.random.randn(1000)plt.hist(randn_data)plt.show()


这里用到了hist()函数。

plt.hist(x, bins=10, range=None, normed=False,weights=None, cumulative=False, bottom=None,histtype='bar', align='mid', orientation='vertical',rwidth=None, log=False, cokor=None,label=None, satacked=False)

“●”的打法:在英文输入法下长按alt然后输入 41457 41457 41457松开alt就有了

x :指定要绘制直方图的数据。
bins :指定直方图条形的个数。
range :指定直方图数据的上下边界,默认包含绘图数据的最大值和最小值。
density :是否将直方图的频数转换成频率。
weights :为每一个数据点设置权重。
cumulative :是否需要计算累计频数或频率。
bottom :为直方图的每个条形添加基准线,默认为0。
histtype :指定直方图的类型,默认为 bar,此外还有’barstacked’、‘step’、‘stepfilled’。
align :设置条形边界值的对齐方式,默认为mid,此外还有 ‘left’ 和 ‘right’。
orientation :设置直方图的放方向,默认为垂直方向。
rwidth :设置直方图条形宽度的百分比。
log :是否需要对绘图数据进行 log 变换。
color :设置直方图的填充色。
label :设置直方图的标签,可通过 legend 展示其图例。
stacked :当有多个数据时,是否需要将直方图呈堆叠放,默认水平放。

下面尝试一些案例

plt.hist(randn_data,bins=30,density=True,histtype='step',color='steelblue')


如果要比较多个数据的分布,可以使用选项histtype=‘stepfilled’,并设置一定的透明度。

import numpy as np
import matplotlib.pyplot as pltrandn_data = np.random.randn(1000)_ = plt.hist(randn_data, bins=30, density=True, histtype='step', color='steelblue')x1 = np.random.normal(0, 0.4, 1000)
x2 = np.random.normal(-3, 1, 1000)
x3 = np.random.normal(2, 2, 1000)kwargs = dict(histtype='stepfilled', alpha=0.5, density=True, bins=50)_ = plt.hist(x1, **kwargs)
#"**"意思为设置默认参数
_ = plt.hist(x2, **kwargs)
_ = plt.hist(x3, **kwargs)plt.show()


有时我们不仅想通过直方图直观地看到数据,而且想获取不同条形个数区间的频数/频率。NumPy提供的histogram()函数可以满足这个需求。

下面从randn_data中提取设置10个条形时的各自的频数。

import numpy as np
import matplotlib.pyplot as pltrandn_data = np.random.randn(1000)counts, bin_edges = np.histogram(randn_data, bins=10)print(counts)

输出:

[  9  31  73 153 235 205 166  87  33   8]Process finished with exit code 0

设置density=True可以获取相应的频率。

density,bin_edges=np.histogram(randn_data,bins=10,density=True)print(density)

输出:

[0.01329965 0.04137668 0.12265231 0.27190391 0.38421204 0.322147020.21870532 0.07832015 0.0192106  0.00591095]Process finished with exit code 0

如果使用的是二维数据,Matplotlib同样提供了hist2d()函数用于查看数据的分布。一维数据中直方图将数据切分到不同的区间中,而二维直方图在两个维度进行切分,因此会得到一个一个的小矩形。

下面演示二维数据绘图

import numpy as np
import matplotlib.pyplot as pltmean = [0, 0]  # 均值
cov = [[1, 1], [1, 2]]  # 协方差矩阵
x, y = np.random.multivariate_normal(mean, cov, 10000).T# 绘制图形
plt.hist2d(x, y, bins=30, cmap='Blues')
cb = plt.colorbar()
cb.set_label(u'计数')plt.show()

Matplotlib——直方图_hist()函数_histogram()函数_二维数据相关推荐

  1. 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图

    [Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...

  2. iterp2函数--------二维数据内插值

    [语法说明] 1.zi=interp1(x,y,z,xi,yi):返回矩阵zi,其元素包含对应于参量xi和yi的元素.用户可以输入行向量和列向量xi和yi,此时,输出向量zi与矩阵meshgrid(x ...

  3. 算法013:二维数组中的查找-在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断中是否存在

    题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例: 现有 ...

  4. MATLAB用fwind2函数设计近似圆对称二维带通滤波器

    %用fwind2函数设计近似圆对称二维带通滤波器 %通带频率为[0.1 0.5] %期望带通频率响应创建矩阵Hd %用freqspace函数创建频率范围向量f1和f2. [f1,f2] = freqs ...

  5. python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例

    本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作.分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy i ...

  6. 剑指offer_第1题_二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同) 每一行都按照从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整 ...

  7. 【机器学习】python使用matplotlib进行二维数据绘图并保存为png图片

    端到端机器学习导航: [机器学习]python借助pandas加载并显示csv数据文件,并绘制直方图 [机器学习]python使用matplotlib进行二维数据绘图并保存为png图片 [机器学习]p ...

  8. 如何将多个一维列表转化为二维列表_数据分析2_如何处理一维、二维数据

    吞一块大饼,还不如切成小块吃得香 常见的数据集,要么是数列,要么是表格: 因此,数据分析最首要的是,处理一维.二维数据. 主要知识点可参考如图. 如需要,可点击以下百度网盘链接下载数据分析基础知识图P ...

  9. C# 传递数组参数_一维数组_二维数组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

最新文章

  1. 张孝祥javascript学习笔记1---HTMLCSS
  2. 职场疑问:如何进行技术面试
  3. c++Builder XE6 MD5 加密算法 BASE64 URL 编码
  4. RFI远程文件包含的漏洞
  5. 王朔《我的千岁寒》:可以看却无法看到
  6. checkPathValidity 检查所有agent的corridor的m_path是否有效
  7. php类常量的特点,php类常量是什么?类常量用法详解
  8. 某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!
  9. java.lang.IllegalArgumentException: Request header is too large
  10. iOS开发之oc(五)--成员变量(实例变量)
  11. Tensorflow——placeholder(矩阵运算小实例)
  12. 如何时刻保持在目标的正确轨道上
  13. 2017-12-28 Linux学习笔记
  14. openai-gpt_为什么GPT-3感觉像是编程
  15. 中望cad文字显示问号怎么办_中望CAD图纸显示乱码怎么办?
  16. java is alphabetic_\p{IsAlphabetic}
  17. PAAS平台的理解及与LaaS,SaaS的关系
  18. 从女孩儿手中音乐般滑落
  19. 用少量箭射爆气球,leetcode习题
  20. Unity中Scale详解

热门文章

  1. Windows:安装cygwin教程
  2. 汽车导航系统升级包2023年1月16日
  3. Android 系统内置下载器服务 DownloadManager 的使用
  4. 972. 相等的有理数
  5. 蓝桥杯web模拟题知识点以及解析
  6. 一分钟搞懂SMTP/POP/IMAP邮件服务
  7. 儿童编程 python培训
  8. 【性能】tcmalloc 使用和原理
  9. Golang之文件数据库--Bolt库的使用
  10. 产权保护之二:责任原则