关系(二)利用python绘制热图
关系(二)利用python绘制热图
热图 (Heatmap)简介

热图适用于显示多个变量之间的差异,通过颜色判断彼此之间是否存在相关性。
快速绘制
-
基于seaborn
import seaborn as sns import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl# 自定义数据 df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"])# 利用seaborn的heatmap函数创建 sns.heatmap(df)plt.show()
定制多样化的热图
自定义热图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。
seaborn主要利用heatmap绘制热图,可以通过seaborn.heatmap了解更多用法
-
不同输入格式的热图
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd np.random.seed(0)sns.set(font='SimHei', font_scale=0.8, style="white") # 解决Seaborn中文显示问题# 初始化 fig = plt.figure(figsize=(12,8))# 宽型:是一个矩阵,其中每一行都是一个个体,每一列都是一个观察值。即热图的每个方块代表一个单元格 df = pd.DataFrame(np.random.random((6,5)), columns=["a","b","c","d","e"])ax = plt.subplot2grid((2, 2), (0, 0), colspan=1) sns.heatmap(df) ax.set_title('宽型')# 方型:相关矩阵热图 df = pd.DataFrame(np.random.random((100,5)), columns=["a","b","c","d","e"]) corr_matrix=df.corr() # 计算相关矩阵ax = plt.subplot2grid((2, 2), (0, 1), colspan=1) sns.heatmap(corr_matrix) ax.set_title('方型')# 方型:对角矩阵 df = pd.DataFrame(np.random.random((100,5)), columns=["a","b","c","d","e"]) corr_matrix=df.corr() # 计算相关矩阵 mask = np.zeros_like(corr_matrix) mask[np.triu_indices_from(mask)] = True # 生成上三角蒙版ax = plt.subplot2grid((2, 2), (1, 0), colspan=1) sns.heatmap(corr_matrix, mask=mask, square=True) ax.set_title('方型-对角矩阵')# 长型:每一行代表一个观测结果,输入三个变量(x,y,z) people = np.repeat(("A","B","C","D","E"),5) feature = list(range(1,6))*5 value = np.random.random(25) df = pd.DataFrame({'feature': feature, 'people': people, 'value': value }) # 数据透视 df_wide = df.pivot_table( index='people', columns='feature', values='value') ax = plt.subplot2grid((2, 2), (1, 1), colspan=1) sns.heatmap(df_wide) ax.set_title('长型')fig.tight_layout() # 自动调整间距 plt.show()
-
自定热图
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd np.random.seed(0)sns.set(font='SimHei', font_scale=0.8, style="white") # 解决Seaborn中文显示问题# 自定义数据 df = pd.DataFrame(np.random.random((10,10)), columns=["a","b","c","d","e","f","g","h","i","j"])# 初始化 fig = plt.figure(figsize=(9,8))# 显示值标签 ax = plt.subplot2grid((3, 2), (0, 0), colspan=1) sns.heatmap(df, annot=True, annot_kws={"size": 7}) ax.set_title('显示值标签')# 自定义网格线 ax = plt.subplot2grid((3, 2), (0, 1), colspan=1) sns.heatmap(df, linewidths=2, linecolor='yellow') ax.set_title('自定义网格线')# 移除x、y或者颜色bar ax = plt.subplot2grid((3, 2), (1, 0), colspan=1) sns.heatmap(df, yticklabels=False, cbar=False) ax.set_title('移除部分轴元素')# 减少标签数量 ax = plt.subplot2grid((3, 2), (1, 1), colspan=1) sns.heatmap(df, xticklabels=4) ax.set_title('减少标签数量')# 指定中心值 ax = plt.subplot2grid((3, 2), (2, 0), colspan=1) sns.heatmap(df, center=1) ax.set_title('指定中心值')# 指定颜色 ax = plt.subplot2grid((3, 2), (2, 1), colspan=1) sns.heatmap(df, cmap="YlGnBu") ax.set_title('指定颜色')fig.tight_layout() # 自动调整间距 plt.show()
-
数据标准化
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd np.random.seed(0)sns.set(font='SimHei', font_scale=0.8, style="white") # 解决Seaborn中文显示问题# 自定义数据 df = pd.DataFrame(np.random.randn(10,10) * 4 + 3) # 列含异常值与标准化 df_col = df.copy() df_col[1]=df_col[1]+40 # 构造异常数据点 df_norm_col=(df_col-df_col.mean())/df_col.std() # 按列标准化 # 行含异常值与标准化 df_row = df.copy() df_row.iloc[2]=df_row.iloc[2]+40 # 构造异常数据点 df_norm_row = df_row.apply(lambda x: (x-x.mean())/x.std(), axis = 1) # 按行标准化# 初始化 fig = plt.figure(figsize=(12,8))# 列含异常数据 ax = plt.subplot2grid((2, 2), (0, 0), colspan=1) sns.heatmap(df_col, cmap='viridis') ax.set_title('列含异常数据')# 按列标准化 ax = plt.subplot2grid((2, 2), (0, 1), colspan=1) sns.heatmap(df_norm_col, cmap='viridis') ax.set_title('按列标准化')# 行含异常数据 ax = plt.subplot2grid((2, 2), (1, 0), colspan=1) sns.heatmap(df_row, cmap='viridis') ax.set_title('行含异常数据')# 按行标准化 ax = plt.subplot2grid((2, 2), (1, 1), colspan=1) sns.heatmap(df_norm_col, cmap='viridis') ax.set_title('按行标准化')fig.tight_layout() # 自动调整间距 plt.show()
-
引申-聚类热图
可以通过seaborn.clustermap了解更多用法
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd# 导入数据 df = pd.read_csv('https://raw.githubusercontent.com/holtzy/The-Python-Graph-Gallery/master/static/data/mtcars.csv') df = df.set_index('model')# 基本聚类热图 g = sns.clustermap(df, standard_scale=1) # 标准化处理plt.show()
总结
以上通过seaborn的heatmap快速绘制热图,并通过修改参数或者辅以其他绘图知识自定义各种各样的热图来适应相关使用场景。
共勉~
相关文章:
关系(二)利用python绘制热图
关系(二)利用python绘制热图 热图 (Heatmap)简介 热图适用于显示多个变量之间的差异,通过颜色判断彼此之间是否存在相关性。 快速绘制 基于seaborn import seaborn as sns import pandas as pd import numpy as np i…...
P8597 [蓝桥杯 2013 省 B] 翻硬币
# [蓝桥杯 2013 省 B] 翻硬币 ## 题目背景 小明正在玩一个“翻硬币”的游戏。 ## 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo&#x…...
主流公链 - Fantom
Fantom:高性能的区块链协议 Fantom是一种开创性的区块链协议,旨在革新去中心化应用和数字金融领域 技术特点 共识机制 Lachesis协议:Fantom使用了Lachesis协议作为其共识算法。Lachesis是一种 异步拜占庭容错(ABFT)共…...
vue-quill-editor 富文本编辑器(可上传视频图片),组件挂载的方式实现
1.安装 npm install vue-quill-editor --save npm install quill-image-drop-module --save npm install quill-image-resize-module --save2.在组件下面新增组件 QlEditor (1)index.vue <template><div><div idquillEditorQiniu><!-- 基于element…...
入门编程第一步,从记住这些单词开始
** 入门编程第一步,从记住这些单词开始 ** 2023-10-18 一、交互式环境与 print 输出 1、print : 打印/输出 2、coding : 编码 3、syntax : 语法 4、error : 错误 5、invalid : 无效 6、idenfifier : 名称/标识符 7、character : 字符 二、字符串的操作&#x…...
[C++]使用OpenCV去除面积较小的连通域
这是后期补充的部分,和前期的代码不太一样 效果图 源代码 //测试 void CCutImageVS2013Dlg::OnBnClickedTestButton1() {vector<vector<Point> > contours; //轮廓数组vector<Point2d> centers; //轮廓质心坐标 vector<vector<Point&…...
vscode连接不上,终端ssh正常,一直输入密码正确但是无法登录
若是之前链结果突然等不上,使用第一个链接 若是第一次链接连不上,先使用第二个链接,在使用第一个链接 原因:原因是服务器端的wget命令不能使用,vscode需要服务器端下载个文件,无法下载就导致了如上的错误…...
Hive on Spark 配置
目录 1 Hive 引擎简介2 Hive on Spark 配置2.1 在 Hive 所在节点部署 Spark2.2 在hive中创建spark配置文件2.3 向 HDFS上传Spark纯净版 jar 包2.4 修改hive-site.xml文件2.5 Hive on Spark测试2.6 报错 1 Hive 引擎简介 Hive引擎包括:MR(默认)…...
ROS 基本
ROS创建自己的功能包 ROS中工作空间(workspace)是一个存放工程开发相关文件的文件夹,其中有四个文件夹。 src:代码空间(Source Space)build:编译空间(Build Space)devel:开发空间(Development Space)install:安装空间(Install Space) OK接下来创作工作空间&#…...
Pygame基础9-射击
简介 玩家用鼠标控制飞机(白色方块)移动,按下鼠标后,玩家所在位置出现子弹,子弹匀速向右飞行。 代码 没有什么新的东西,使用两个精灵类表示玩家和子弹。 有一个细节需要注意,当子弹飞出屏幕…...
Ps:颜色查找
颜色查找 Color Lookup命令通过应用预设的 LUT 来改变图像的色彩和调性,从而为摄影师和设计师提供了一种快速实现复杂色彩调整的方法,广泛应用于颜色分级、视觉风格的统一和创意色彩效果的制作。 Ps菜单:图像/调整/颜色查找 Adjustments/Colo…...
vue3+vite 模板vue3-element-admin框架如何关闭当前页面跳转 tabs
使用模版: 有来开源组织 / vue3-element-admin 需要关闭的.vue 页面增加以下方法 //setup 里import {LocationQuery, useRoute, useRouter} from "vue-router"; const router useRouter(); function close() {console.log(|--router.currentRoute.value, router.cur…...
JavaScript 对象管家 Proxy
JavaScript 在 ES6 中,引入了一个新的对象类型 Proxy,它可以用来代理另一个对象,并可以在代理过程中拦截、覆盖和定制对象的操作。Proxy 对象封装另一个对象并充当中间人,其提供了一个捕捉器函数,可以在代理对象上拦截…...
Qt + Vs联合开发
Qt + Vs联合开发 文章目录 Qt + Vs联合开发环境说明VS+Qt安装注意事项QtCreator msvc编译器配置Visual Studio 2019 + Qt 5.12.10Visual Studio 2015 + Qt5.12.10VsQt环境配置安装插件 Qt Visual Studio Tools插件配置Qt创建项目Vs创建Qt项目VsQt工程转换Vs工程转Qt工程Qt工程转…...
开源知识库平台Raneto--使用Docker部署Raneto
文章目录 一、Raneto介绍1.1 Raneto简介1.2 知识库介绍 二、阿里云环境2.1 环境规划2.2 部署介绍 三、环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Raneto镜像五、部署Raneto知识库平台5.1 创建挂载目录5.2 编辑config.js文件5.3 编…...
鸿蒙原OS开发实例:【ArkTS类库单次I/O任务开发】
Promise和async/await提供异步并发能力,适用于单次I/O任务的场景开发,本文以使用异步进行单次文件写入为例来提供指导。 实现单次I/O任务逻辑。 import fs from ohos.file.fs; import common from ohos.app.ability.common;async function write(data:…...
C语言:二叉树的构建
目录 一、二叉树的存储 1.1 顺序存储 1.2 链式存储 二、二叉树的顺序结构及实现 2.1堆的概念及结构 2.2堆的构建 2.3堆的插入 2.4堆顶的删除 2.5堆的完整代码 三、二叉树的链式结构及实现 3.1链式二叉树的构建 3.2链式二叉树的遍历 3.2.1前序遍历 …...
软件测试工程师面试汇总功能测试篇
Q:一、进行测试用例设计的时候用到的方法有哪些? A:最常使用的测试用例设计方法包括等价类划分法、边界值分析方法、场景法、错误推测法。其中,最容易 发现错误的是边界值法,使用最多的是场景法。以注册为例:首先从需求确定用户名…...
javaAPI1
API application pragramming interface 应用程序编程接口 除java.lang包以外,其他包中的类在使用时需要导入 建包 package com.abc.javabean; 导包格式,import 包名.类名 API使用技巧 1,先看关键字 2,看参数列表 3,看返回值类型 String 封装字符串和处理字符串的类…...
案例研究|DataEase实现物业数据可视化管理与决策支持
河北隆泰物业服务有限责任公司(以下简称为“隆泰物业”)创建于2002年,总部设在河北省高碑店市,具有国家一级物业管理企业资质,通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今,隆…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
