Python pytorch实现绘制一维热力图
作者:zzz_979 发布时间:2022-04-03 21:09:14
标签:Python,热力图
热力图
热力图(Heat Map)是指用 X 轴 和 Y 轴 表示的两个分类字段确定数值点的位置,通过相应位置的矩形颜色去表现数值的大小,颜色深代表的数值大。
热力图是非常特殊的一种图,可以显示不可点击区域发生的事情。热力图非常关注分布,可以不需要坐标轴,其背景通常是图片或者地图,一般使用彩虹色系做展示。
热力图一般以二维居多,多用于图像处理领域。
热力图主要用于展示连续型数据的分布情况。例如用颜色展现某一范围内不同地区数据量的差异,网站分析等等。
优势:好看、易于理解,数据信息更直观有效,可以清晰地呈现数据在地理空间的分布、频率或密度情况。
缺点:效果过于柔化,不适合用作数据的精确表达,且不适合比较单一变量的大小。
一维热力图-----总体分布情况
根据折线图中的数据创建一维热图,类似于直方图,根据每个 bins 的出现频率绘制不同颜色
代码
可以通过imshow关键字参数设置imshow设置图像的数据范围。 这用元组(left, right, bottom, top)设置范围。
在范围内使用直方图的最小和最 * in边缘可将数据移动到其原始值
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
# 画布大小
plt.rcParams["figure.figsize"] = 5,2
# 顺序生成 -56 到 40 之间的96个数
pos = np.arange(-56,40) #there are 96 numbers from -56 to 39
print len(pos), pos.min(), pos.max()
# 生成 96 个随机数
p = np.random.rand(len(pos))
# 随机数转化成概率
p= p/np.sum(p)
# 根据每个数出现的概率,在 pos 中挑选 4000 个数
a= np.random.choice(pos, size=4000, p=p)
# 将 a 的取值范围划分为 96 个 bin
bins=np.arange(-56,41)
# 得到直方分布,hist 表示每个 bin 中数的个数 ,edges 表示 bin 的边界
hist, edges = np.histogram(a, bins)
hist=hist[np.newaxis,:]
# 热力图 x轴 和 y轴范围
extent=[bins.min(), bins.max(),0,1]
#画图
plt.imshow(hist, aspect ="auto", cmap="viridis", extent=extent)
plt.gca().set_yticks([])
plt.show()
一维热力图----数据变化情况
根据数据本身的波动情况,根据数值本身大小变换颜色
例图,可以看到数值大时,热力图更红,数值小时,热力图更蓝
代码
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
# 画布大小
plt.rcParams["figure.figsize"] = 5,4
# 生成 40 个 sin 函数值
x = np.sin(range(40))
# 每x个数计算平均值,即一段内的分布(此处取为1,即为每个数绘制分布)
a = x.reshape(1,-1)
a = np.mean(a, axis=0)
a=a[np.newaxis,:]
# 绘制热力图
figure = plt.figure()
axes = figure.add_subplot(211)
axes.matshow(a,aspect ="auto",cmap="Spectral_r", interpolation='bilinear')
# 不显示横纵坐标
plt.xticks([])
plt.yticks([])
# 绘制原始数据图
plt.subplot(212)
plt.plot(range(len(x)),x)
# x轴显示范围从第一个数到最后一个
plt.xlim((0,len(x)-1))
plt.show()
attention 热力图绘制原理
难点在于数据获取,获取最后一层梯度数据,即可知道注意力重点,根据梯度数据 resize 到原始数据,再画出热力图(根据数据变化情况),之后与原始数据对应,即可得到网络的高响应热力图
来源:https://blog.csdn.net/weixin_48018951/article/details/130942569


猜你喜欢
- Timeloop是一个库,可用于运行多周期任务。这是一个简单的库,使用decorator模式在线程中运行标记函数。首先安装timeloop库
- 工作中,我们经常会遇到数据异常,比如说浏览量突增猛降,交易量突增猛降,但是这些数据又不是符合正太分布的,如果用几倍西格玛就不合适,那么我们如
- 一、界面介绍文件导航区域 能够 浏览/定位/打开 项目文件文件编辑区域 能够 编辑 当前打开的文件控制台区域 能够:输出程序执行内容跟踪调试
- 1.汇率换算程序案例描述设计一个汇率换算器程序,其功能是将外币换算成人民币,或者相反案例分析分析问题:分析问题的计算部分;确定问题:将问题划
- 本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下from turtle import *#控制彩虹路径def
- 三个页在同一个窗口,分别为main.htm,left.htm和right.htm。 main.htm <html> <he
- 这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的
- 1、JavaScript方法:document.getElementById("id").innerHTML; (1)实
- jQuery 将马上发布 1.4 正式版,代码也从 googlecode 上迁移到了 github. jQuery 是我接触的第一个 JS
- XML.DOM需求有一个表,里面数据量比较大,每天一更新,其字段可以通过xml配置文件进行配置,即,可能每次建表的字段不一样。上游跑时会根据
- OCR of Hand-written Data using kNNOCR of Hand-written Digits我们的目标是构建一个
- Selenium的介绍、配置和调用Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具。Selenium测
- 如何用METADATA替换ADOVBS.INC? 在ASP中,使用组件时,如ADO,得先包含
- 概要在k8s中,kube-scheduler是Kubernetes中的调度器,用于将Pod调度到可用的节点上。在调度过程中,kube-sch
- 从一头雾水到模模糊糊,不明原理,暂时记录一下1.安装Qtcratersudo pacman -S qtcreater2.打开Qtcrater
- 本文实例为大家分享了python获取本机所有IP地址的具体代码,供大家参考,具体内容如下import socket# 查看当前主机名prin
- var obj = document.getElementByIdx_x(”testSelect”); //定位idvar index =
- 本人最近在做字符识别,所以自行在网上寻找方法,接触到tesseract,自己按照网上方法做的时候,也遇到一些问题
- 本文实例讲述了Django开发的简易留言板。分享给大家供大家参考,具体如下:Django在线留言板小练习环境ubuntu16.04 + py
- 当数组/矩阵过大则只会显示其中一部分,中间则会自动用省略号代替:直接在import numpy 加上下面一句代码即可解决:import nu