当前位置: 首页 > news >正文

【Python】数据可视化之热力图

 热力图(Heatmap)是一种通过颜色深浅来展示数据分布、密度和强度等信息的可视化图表。它通过对色块着色来反映数据特征,使用户能够直观地理解数据模式,发现规律,并作出决策。

 

目录

基本原理

sns.heatmap

代码实现


基本原理

热力图本质上是一个数值矩阵,图上每一个色块都代表一个数值。通过离散数值、权重算法与分析模型等技术手段,将用户行为频度或数据密度以色块的形式展现出来。在设计时,需要指定颜色映射的规则,例如较大的值可以由较深的颜色或偏暖的颜色表示,而较小的值则由较浅的颜色或较冷的颜色表示。

两个变量之间相关系数的计算公式为:

$\mathrm{p}_{\mathrm{X}_1\mathrm{X}_2}=\frac{\mathrm{Cov}(\mathrm{X}_1,\mathrm{X}_2)}{\sqrt{\mathrm{DX}_1,\mathrm{DX}_2}}=\frac{\mathrm{EX}_1\mathrm{X}_2-\mathrm{EX}_1*\mathrm{EX}_2}{\sqrt{\mathrm{DX}_1*\mathrm{DX}_2}}$

ρ表示相关系数,Cov表示协方差,E表示数学期望/均值。值得注意的是,该相关系数主要用以量化变量之间的线性关联强度;具体而言,当相关系数较高时,它指示了变量间存在较强的线性相关性。然而,对于相关系数较低的两个变量而言,这仅仅表明它们之间的线性相关程度较弱,而并非意味着这两个变量之间完全不存在其他类型的关联,如非线性(如曲线)关系或其他复杂的相关性。因此,在解释相关系数时需谨慎,避免过度简化或误读变量间的关系。

sns.heatmap

sns.heatmap 是 Seaborn 库中的一个非常有用的函数,用于绘制热力图(Heatmap)。热力图是一种通过颜色深浅来表示数据大小的图形,常用于展示矩阵或表格数据的分布和关系。在数据可视化中,热力图尤其适合展示变量之间的相关性、数据的聚类情况或数据的密度分布等。

sns.heatmap涉及到一些主要的参数:

  • vmin, vmax:这两个参数用于设置热力图中颜色映射的最小值和最大值,可以调整颜色映射的范围以更好地展示数据。
  • cmap:指定颜色映射表(colormap),用于控制热力图中颜色的分布和变化。
  • annot:如果设置为True,则在每个单元格中显示数据值。也可以是一个形状与数据相同的数组,用于自定义注释内容。
  • fmt:当annot为True时,用于设置注释的格式化字符串。
  • linewidths:设置热力图单元格之间的线条宽度。
  • linecolor:设置热力图单元格之间线条的颜色。
  • cbar:是否显示颜色条。
  • square:如果为True,则强制热力图的每个单元格都是正方形的。
  • mask:一个布尔数组或DataFrame,用于指定哪些单元格应该被屏蔽(不显示)。这对于绘制下三角或上三角矩阵特别有用。

代码实现

# 生成一个3x3的随机数组
values = np.random.rand(3, 3)
# 设置x轴标签
x_ticks = ['x-1', 'x-2', 'x-3']
# 设置y轴标签
y_ticks = ['y-1', 'y-2', 'y-3'] 
# 使用seaborn库绘制热图,并设置x轴和y轴标签
ax = sns.heatmap(values, xticklabels=x_ticks, yticklabels=y_ticks)
# 设置图表标题
ax.set_title('3x3 Heatmap') 
# 设置x轴标签
ax.set_xlabel('x label')  
# 设置y轴标签
ax.set_ylabel('y label')
# 显示图表
plt.show()

uniform_data = np.random.rand(10, 12) 
ax = sns.heatmap(uniform_data)

通过annot参数设置可以在小方格中显示数值

# 生成一个10行12列的随机数矩阵
uniform_data = np.random.rand(10, 12)
# 使用seaborn库中的heatmap函数绘制热力图,annot参数设置为True表示在热力图上显示数据值
ax = sns.heatmap(uniform_data, annot=True)

可以创建一个与相关系数矩阵相同大小的布尔矩阵,用于遮罩,实现更加简化美观的效果。

布尔矩阵(Boolean Matrix)是数学中的一个重要概念,它指的是元素只取0或1的矩阵,因此也被称为0-1矩阵。布尔矩阵在计算机科学、编码理论、网络理论等领域有着广泛的应用。在数学上,布尔矩阵通常使用大写字母(如A, B, C等)表示,矩阵中的元素使用小写字母加下标(如a_ij)表示,其中i表示行号,j表示列号。

# 导入ascii_letters模块
from string import ascii_letters
# 设置seaborn的样式为white
sns.set(style="white")
# 创建一个随机数生成器
rs = np.random.RandomState(33)
# 创建一个100行26列的DataFrame,数据为正态分布随机数
d = pd.DataFrame(data=rs.normal(size=(100, 26)),columns=list(ascii_letters[26:]))
# 计算DataFrame的相关系数矩阵
corr = d.corr()
# 创建一个与相关系数矩阵相同大小的布尔矩阵,用于遮罩
mask = np.zeros_like(corr, dtype=bool)
# 将上三角矩阵的元素设置为True
mask[np.triu_indices_from(mask)] = True
# 创建一个11x9的子图
f, ax = plt.subplots(figsize=(11, 9))
# 创建一个颜色映射
cmap = sns.diverging_palette(220, 10, as_cmap=True)
# 绘制热力图,使用遮罩,颜色映射,最大值为0.3,中心值为0,方格,边框宽度为0.5,颜色条缩小为0.5
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0,square=True, linewidths=.5, cbar_kws={"shrink": .5})

 

相关文章:

【Python】数据可视化之热力图

热力图(Heatmap)是一种通过颜色深浅来展示数据分布、密度和强度等信息的可视化图表。它通过对色块着色来反映数据特征,使用户能够直观地理解数据模式,发现规律,并作出决策。 目录 基本原理 sns.heatmap 代码实现 基…...

个人博客系统测试(selenium)

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:Yan. yan.                        …...

【速成Redis】01 Redis简介及windows上如何安装redis

前言: 适用于:需要快速掌握redis技能的人(比如我),在b站,找了个课看。 01.课程简介_哔哩哔哩_bilibili01.课程简介是【GeekHour】一小时Redis教程的第1集视频,该合集共计19集,视频…...

入侵检测系统(IDS)和入侵预防系统(IPS)

入侵检测系统(IDS)和入侵预防系统(IPS)是网络安全领域中用来检测和防止潜在的恶意活动或政策违规行为的系统。它们的主要目的是保护网络和主机不受未授权访问和各种形式的攻击。以下是它们的主要区别和功能: 一&#…...

pytorch 加载模型参数后 如何测试数据,应用模型预测数据,然后连续变量转换成 list 或者numpy.array padans并保存到csv文件中

在PyTorch中,加载模型参数后测试数据通常涉及以下几个步骤: 1. **加载模型**:首先,你需要定义模型的结构,然后加载预训练的参数。 2. **加载数据**:准备你的测试数据集。确保数据集已经正确地预处理&…...

uni-app开发流程(开发、预览、构建和发布过程)

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,支持编写一次代码,生成可以在多个平台(如微信小程序、H5、App等)运行的应用。下面是 uni-app 的开发流程,包括从创建项目到部署的各个阶段。 1. 创建项目 通过 HB…...

Linux Shell: 使用 Expect 自动化 SCP 和 SSH 连接的 Shell 脚本详解

文章目录 0. 引言2. 解决方案3. 脚本详解脚本1:使用 SSH 和 Expect 自动化登录远端机器脚本说明 脚本2:使用 SCP 和 Expect 自动化文件上传脚本说明 脚本3:使用 SCP 和 Expect 自动化文件下载脚本说明 4. 脚本的使用方法5. 关键技术点5.1. Ex…...

深入分析MySQL事务日志-Undo Log日志

文章目录 InnoDB事务日志-Undo Log日志2.1 Undo Log2.1.1 Undo Log与原子性2.1.2 Undo的存储格式1)insert类型Undo Log2)delete类型Undo Log3)update类型Undo Log 2.1.3 Undo Log的工作原理2.1.4 Undo Log的系统参数2.1.5 Undo Log与Purge线程…...

828华为云征文 | 在Huawei Cloud EulerOS系统中安装Docker的详细步骤与常见问题解决

前言 Docker是一种轻量级的容器技术,广泛用于应用程序的开发、部署和运维。在华为云的欧拉(Huawei Cloud EulerOS)系统上安装和运行Docker,虽然与CentOS有相似之处,但在具体实现过程中,可能会遇到一些系统…...

什么是数据增强中的插值法?

一、插值法的概念 在数据增强中,插值法是一种重要的技术,它通过数学模型在已知数据点之间估计未知数据点的值。这种方法可以帮助我们在不增加实际数据的情况下,通过生成新的数据点来扩展数据集。插值法基于这样的假设:如果已知的数…...

springboot实战学习(9)(配置mybatis“驼峰命名“和“下划线命名“自动转换)(postman接口测试统一添加请求头)(获取用户详细信息接口)

接着学习。之前的博客的进度:完成用户模块的注册接口的开发以及注册时的参数合法性校验、也基本完成用户模块的登录接口的主逻辑的基础上、JWT令牌"的组成与使用以及完成了"登录认证"(生成与验证JWT令牌)具体往回看了解的链接…...

之前做了抵押贷款,现在房市不景气,马上贷款要到期了该怎么办?

面对房贷的重压,特别是对于那些正承受高息贷款之苦的现有房产业主而言,探索有效的减负策略显得尤为重要。今天,我们共同探讨几种智慧策略,旨在帮助您巧妙减轻房贷的经济负担。 一、优化贷款结构:低息置换的魔力 当前&a…...

poi生成的ppt,powerPoint打开提示内容错误解决方案

poi生成的ppt,powerPoint打开提示内容错误解决方案 最近做了ppt的生成,使用poi制作ppt,出现一个问题。微软的powerPoint打不开,提示错误信息 通过xml对比工具发现只需要删除幻灯片的某些标签即可解决。 用的是XML Notepand 分…...

基于stm32物联网身体健康检测系统

在当今社会,由于经济的发展带来了人们生活水平不断提高,但是人们的健康问题却越来越突出了,各种各样的亚健康随处可在,失眠、抑郁、焦虑症,高血压、高血糖等等侵袭着人们的健康,人们对健康的关注达到了一个…...

BeautifulSoup4在爬虫中的使用

一、Beautiful Soup4简介 Beautiful Soup 提供一些简单的python函数来处理导航、搜索等功能。 它是一个工具箱,是python的一个库,最主要的功能是从网页获取数据。 二、Beautiful Soup4安装 在cmd下安装 pip install beautifulsoup4三、BeautifulSou…...

Laya2.x出包alipay小游戏

小游戏开发者工具,支付宝官方已经出了,不说了。 1.LAYA2.X打出得小游戏包中my-adapter.js这个文件需要替换,或者自行修改,替换3.x得; 2.unity导包出得模型文件命名需要注意,避免太长,路径也不…...

Vue极简入门

1.注册路由,如果是子路由,就加一个children import Vue from vue import Router from vue-router import Main from ../views/Main.vue import Login from ../views/Login.vueimport UserProfile from "../views/user/Profile.vue" import Us…...

系统敏感信息搜索工具(支持Windows、Linux)

目录 工具介绍 使用说明 search模块 browser模块 下载地址 工具介绍 可以快速搜索服务器中的有关username,passsword,账号,口令的敏感信息还有浏览器的账户密码。 使用说明 search模块 searchall64.exe search -p 指定路径 searchall64.exe search -p 指定路径 -s &q…...

Fyne ( go跨平台GUI )中文文档-容器和布局 (四)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…...

文心智能体 恐怖类游戏

智能体名称:孤岛惊魂 链接:文心智能体平台AgentBuilder | 想象即现实 (baidu.com)https://agents.baidu.com/center/agent/preview/MFhBvA0K9EXXVdjHCcUumadWmWesKvw2 角色与目标设定 🧑🏻 角色:孤岛惊魂是一位虚拟…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...