python hist2d_matplotlib可视化之hist直方图
直方图
直方图(英语: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直方图相关推荐
- Python数据可视化的例子——直方图(hist)和核密度曲线(kde)
直方图一般用来观察数据的分布形态,横坐标代表数值的均匀分段,纵坐标代表每个段内的观测数量(频数).一般直方图都会与核密度图搭配使用,目的是更加清晰地掌握数据的分布特征,下面将详细介绍该类型图形的绘制. ...
- python数据可视化(matplotlib条形图、饼图、箱状图、直方图、折线图)(代码)
python数据可视化(matplotlib条形图.饼图.箱状图.直方图.折线图) matplotlib(条形图) 一.简单条形图 1.简单垂直条形图 2.简单水平条形图 二.水平交错条形图 三.垂直 ...
- 数据可视化实验:python数据可视化-柱状图,条形图,直方图,饼图,棒图,散点图,气泡图,雷达图,箱线图,折线图
数据可视化实验:python数据可视化 实验8-12:大数据可视化工具-python 目录 1柱状图 2条形图 3直方图 4饼图 5棒图 6散点图 7气泡图 8雷达图 9箱线图 10折线图 1柱状图 ...
- python使用matplotlib可视化堆叠的直方图(stacked histogram plot)、多个类别的数据在直方图区间层面累积堆叠起来
python使用matplotlib可视化堆叠的直方图(stacked histogram plot).多个类别的数据在直方图区间层面累积堆叠起来 目录
- 使用Python,OpenCV计算图像直方图(cv2.calcHist)
使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...
- Python数据可视化的10种技能
内容来自:极客时间专栏<数据分析实战45讲> 如果你想要用Python进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解.其中最直观的就是采用数据可视化技 ...
- 《Python数据可视化之matplotlib实践》配套代码
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx <Python数据可视化之matplotlib实践> 借助matplotlib讲解 ...
- python数据可视化读取excell文件绘制图像详细教程
python数据可视化读取excell文件绘制图像详细教程 python数据可视化 python库中的基本用法 import pandas as pd # 调用pandas库 来读取excell的文件 ...
- 基于python的可视化分析_Python数据的可视化分析,python
python数据可视化分析 首先载入必要的库 import warnings import numpy as np import pandas as pd import matplotlib.pypl ...
- Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...
最新文章
- 17岁成研究生,20岁被劝退,38岁“神童”离世
- JAVA垃圾回收机制概要
- python 日志模块 logging
- SWIFT问题很大,第4家受害银行浮出水面
- Java Annotation的RetentionPolicy介绍
- php在sql中添加数据,使用php在oracle数据库中插入数据
- ArcGIS Android工程迁移到其他电脑不能打开的问题
- OpenStack开发学习笔记01
- 大话设计模式—观察者模式
- WPF中设置ListView的Items颜色交替显示
- ediplus 复制编辑一列_vi编辑器的使用详解
- Spring全家桶,永远滴神!
- keras实例学习-双向LSTM进行imdb情感分类
- javascript如何处理多级的实时监听
- 基于算术优化算法的函数寻优算法
- 微信小程序快手小店登录
- Heterogeneous Graph Attention Network翻译
- Emulex光纤卡lpfc配置文件的修改
- 西游记中车迟国的三位妖道
- python数据挖掘入门与实践-第一章-用最简单OneR算法对Iris植物分类