直方图

直方图(英语:Histogram)是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量,一般以长条图(bar)的形式具体表现。因为直方图的长度及宽度很适合用来表现数量上的变化,所以较容易解读差异小的数值.

hist

函数定义:

在向量 x 和 y 指定的位置创建一个包含圆形的散点图,该类型的图形也称为气泡图。

matplotlib.pyplot.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)[source]

常用参数:

x:

数据集,最终的直方图将对数据集进行统计

bins:

统计的区间分布划分,指定bin(箱子)的个数;

range:

显示的区间,range在没有给出bins时生效

density:

显示概率密度,默认为false

histtype:

可选{'bar', 'barstacked', 'step', 'stepfilled'}之一,默认为bar,推荐使用默认配置,step使用的是梯状,stepfilled则会对梯状内部进行填充,效果与bar类似

align:

可选{'left', 'mid', 'right'}之一,默认为'mid',控制柱状图的水平分布,left或者right,会有部分空白区域,推荐使用默认

log:

默认为False,y坐标轴是否选择指数刻度,在数据分布的范围较大的时候,可以通过log指数刻度来缩小显示的范围。

stacked:

默认为False,是否为堆积状图

示例说明:

import matplotlib.pyplot as plt

import numpy as np

import matplotlib

"""

font:设置中文

unicode_minus:显示负好

"""

matplotlib.rcParams['font.family'] = ['Heiti TC']

matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号

"""

随机数生成,自动生成正态分布的数据集

"""

data = np.random.randn(10000)

"""

facecolor:长条形的颜色

edgecolor:长条形边框的颜色

alpha:透明度

"""

plt.hist(data, bins=40, density=False, facecolor="tab:blue", edgecolor="tab:orange", alpha=0.7)

"""

xlabel:横轴标签

ylabel:纵轴标签

title:图标题

"""

plt.xlabel("区间")

plt.ylabel("频数(频数)")

plt.title("频数(频率)分布图")

plt.show()

扩展应用:

增加不同长条形色彩映射

利用hist函数的三个返回值,对每一个不同区间进行不同颜色的显示.通过这种方式可以直观的看出分布的差异.

n: 数组或数组列表,表明每一个bar区间的数量或者百分比;

bins : 数组,bar的范围和bins参数含义一样;

patches : 列表,每个bar图形对象;

import matplotlib.pyplot as plt

import numpy as np

import matplotlib

"""

font:设置中文

unicode_minus:显示负好

"""

matplotlib.rcParams['font.family'] = ['Heiti TC']

matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号

"""

随机数生成,自动生成正态分布的数据集

"""

data = np.random.randn(10000)

"""

n: 数组或数组列表,表明每一个bar区间的数量或者百分比

bins : 数组,bar的范围和bins参数含义一样

patches : 列表 或者列表的列表 图形对象

"""

n, bins, patches =plt.hist(data, bins=40,)

percent = n / n.max()

#将percent中的数据进行正则化,这样可以方便的映射到colormap中

norm = colors.Normalize(percent.min(), percent.max())

"""

patches为对应每个长条的对象,循环为每个bar条进行颜色的设置.

set_facecolor()用来设置条形的颜色

"""

for thisfrac, thispatch in zip(percent, patches):

color = plt.cm.viridis(norm(thisfrac))

thispatch.set_facecolor(color)

"""

xlabel:横轴标签

ylabel:纵轴标签

title:图标题

"""

plt.xlabel("区间")

plt.ylabel("频数(频数)")

plt.title("频数(频率)分布图")

plt.show()

显示多个数据的直方图

可以在一个图中显示多个数据的直方图,方便对不同数据进行对比.

重点区分坐标系一和坐标系四两者之间显示的区别

import numpy as np

import matplotlib.pyplot as plt

np.random.seed(64)

n_bins = 20

"""

生成为一个纬度为(6000,3)的随机数据

"""

x = np.random.randn(6000, 3)

"""

生成有两行行列坐标系的画布

"""

fig, axes = plt.subplots(nrows=2, ncols=2,figsize=(16,9))

"""

第一坐标系,使用bar条来显示

为了和第四坐标系进行效果对比,次数对三列随机数进行分别显示

"""

colors = ['tab:blue', 'tab:orange', 'tab:green']

alpha=[1,0.6,0.3]

for index in np.arange(x.shape[1]):

axes[0][0].hist(x[:,index], n_bins, density=True, histtype='bar', color=colors[index], label=colors[index],alpha=alpha[index])

#axes[0][0].hist(x, n_bins, density=True, histtype='bar', color=colors, label=colors)

axes[0][0].legend(prop={'size': 10})

axes[0][0].set_title('bar hist')

"""

第二坐标系,使用bar条来显示,设置的堆积的属性stacked

"""

axes[0][1].hist(x, n_bins, density=True, histtype='bar', stacked=True)

axes[0][1].set_title('stacked bar hist')

"""

第三坐标系,使用step来显示,设置的堆积的属性stacked

"""

axes[1][0].hist(x, n_bins, histtype='step', stacked=True, fill=False)

axes[1][0].set_title('stacked step hist')

"""

第四坐标系,一次性显示三列数据

"""

axes[1][1].hist(x, n_bins, density=True,histtype='bar')

axes[1][1].set_title('bat hist')

fig.tight_layout()

plt.show()

双变量直方图

在进行一维频次直方图绘制之外,可以对二维数组按照二维区间进行二维频次的直方图绘制.

重点:此处使用另外一种方式进行多子图的绘制,利用GridSpec可以更加灵活的多子图的绘制

import matplotlib.pyplot as plt

import numpy as np

from matplotlib import colors

from matplotlib.ticker import PercentFormatter

import matplotlib.gridspec as gridspec

np.random.seed(64)

N_points = 800

n_bins = 40

"""

生成为x,y随机数据

"""

x = np.random.randn(N_points)

y = 2* x + np.random.randn(N_points) + 5

fig = plt.figure(figsize=(10, 8))

# gridspec的用法,可以使图像横跨多个坐标

G = gridspec.GridSpec(2, 2)

#显示第一坐标系,其位置第一行,第一列(G[0, 0])

axes =fig.add_subplot(G[0, 0])

axes.hist(x, bins=n_bins)

#显示第二坐标系,其位置第一行,第二列(G[0, 1])

axes =fig.add_subplot(G[0, 1])

axes.hist(y, bins=n_bins)

#显示第三坐标系,其位置第二行整行(G[1, :])

axes =fig.add_subplot(G[1, :])

axes.hist2d(x,y, bins=n_bins)

plt.show()

python hist2d_matplotlib可视化之hist直方图相关推荐

  1. Python数据可视化的例子——直方图(hist)和核密度曲线(kde)

    直方图一般用来观察数据的分布形态,横坐标代表数值的均匀分段,纵坐标代表每个段内的观测数量(频数).一般直方图都会与核密度图搭配使用,目的是更加清晰地掌握数据的分布特征,下面将详细介绍该类型图形的绘制. ...

  2. python数据可视化(matplotlib条形图、饼图、箱状图、直方图、折线图)(代码)

    python数据可视化(matplotlib条形图.饼图.箱状图.直方图.折线图) matplotlib(条形图) 一.简单条形图 1.简单垂直条形图 2.简单水平条形图 二.水平交错条形图 三.垂直 ...

  3. 数据可视化实验:python数据可视化-柱状图,条形图,直方图,饼图,棒图,散点图,气泡图,雷达图,箱线图,折线图

    数据可视化实验:python数据可视化 实验8-12:大数据可视化工具-python 目录 1柱状图 2条形图 3直方图 4饼图 5棒图 6散点图 7气泡图 8雷达图 9箱线图 10折线图 1柱状图 ...

  4. python使用matplotlib可视化堆叠的直方图(stacked histogram plot)、多个类别的数据在直方图区间层面累积堆叠起来

    python使用matplotlib可视化堆叠的直方图(stacked histogram plot).多个类别的数据在直方图区间层面累积堆叠起来 目录

  5. 使用Python,OpenCV计算图像直方图(cv2.calcHist)

    使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...

  6. Python数据可视化的10种技能

    内容来自:极客时间专栏<数据分析实战45讲> 如果你想要用Python进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解.其中最直观的就是采用数据可视化技 ...

  7. 《Python数据可视化之matplotlib实践》配套代码

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx <Python数据可视化之matplotlib实践> 借助matplotlib讲解 ...

  8. python数据可视化读取excell文件绘制图像详细教程

    python数据可视化读取excell文件绘制图像详细教程 python数据可视化 python库中的基本用法 import pandas as pd # 调用pandas库 来读取excell的文件 ...

  9. 基于python的可视化分析_Python数据的可视化分析,python

    python数据可视化分析 首先载入必要的库 import warnings import numpy as np import pandas as pd import matplotlib.pypl ...

  10. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)

    Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...

最新文章

  1. 17岁成研究生,20岁被劝退,38岁“神童”离世
  2. JAVA垃圾回收机制概要
  3. python 日志模块 logging
  4. SWIFT问题很大,第4家受害银行浮出水面
  5. Java Annotation的RetentionPolicy介绍
  6. php在sql中添加数据,使用php在oracle数据库中插入数据
  7. ArcGIS Android工程迁移到其他电脑不能打开的问题
  8. OpenStack开发学习笔记01
  9. 大话设计模式—观察者模式
  10. WPF中设置ListView的Items颜色交替显示
  11. ediplus 复制编辑一列_vi编辑器的使用详解
  12. Spring全家桶,永远滴神!
  13. keras实例学习-双向LSTM进行imdb情感分类
  14. javascript如何处理多级的实时监听
  15. 基于算术优化算法的函数寻优算法
  16. 微信小程序快手小店登录
  17. Heterogeneous Graph Attention Network翻译
  18. Emulex光纤卡lpfc配置文件的修改
  19. 西游记中车迟国的三位妖道
  20. python数据挖掘入门与实践-第一章-用最简单OneR算法对Iris植物分类

热门文章

  1. Unity 代码帧动画
  2. Linux虚拟机设置全屏
  3. QQ空间、新浪微博、腾讯微博等一键分享API链接代码
  4. Linux嵌入式系统的电子相册代码,基于嵌入式Linux和Qt编程实现数码相框的设计
  5. 彻底关闭Adobe Flash Player的弹窗广告(不影响Flash正常使用)
  6. hdu 3987 最小割边数模板题
  7. 三个基本的布尔逻辑算符是_常用布尔逻辑运算符有哪些
  8. 云计算发展趋势都有哪些 如何快速入行云计算
  9. ffmpeg添加自定义硬件编解码器
  10. AndroidX使用