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

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

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

热图 (Heatmap)简介

1

热图适用于显示多个变量之间的差异,通过颜色判断彼此之间是否存在相关性。

快速绘制

  1. 基于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()
    

    2

定制多样化的热图

自定义热图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

seaborn主要利用heatmap绘制热图,可以通过seaborn.heatmap了解更多用法

  1. 不同输入格式的热图

    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()
    

    3

  2. 自定热图

    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()
    

    4

  3. 数据标准化

    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()
    

    5

  4. 引申-聚类热图

    可以通过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()
    

    5

总结

以上通过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…...

入门编程第一步,从记住这些单词开始

** 入门编程第一步&#xff0c;从记住这些单词开始 ** 2023-10-18 一、交互式环境与 print 输出 1、print : 打印/输出 2、coding : 编码 3、syntax : 语法 4、error : 错误 5、invalid : 无效 6、idenfifier : 名称/标识符 7、character : 字符 二、字符串的操作&#x…...

[C++]使用OpenCV去除面积较小的连通域

这是后期补充的部分&#xff0c;和前期的代码不太一样 效果图 源代码 //测试 void CCutImageVS2013Dlg::OnBnClickedTestButton1() {vector<vector<Point> > contours; //轮廓数组vector<Point2d> centers; //轮廓质心坐标 vector<vector<Point&…...

vscode连接不上,终端ssh正常,一直输入密码正确但是无法登录

若是之前链结果突然等不上&#xff0c;使用第一个链接 若是第一次链接连不上&#xff0c;先使用第二个链接&#xff0c;在使用第一个链接 原因&#xff1a;原因是服务器端的wget命令不能使用&#xff0c;vscode需要服务器端下载个文件&#xff0c;无法下载就导致了如上的错误…...

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引擎包括&#xff1a;MR&#xff08;默认&#xff09…...

ROS 基本

ROS创建自己的功能包 ROS中工作空间(workspace)是一个存放工程开发相关文件的文件夹&#xff0c;其中有四个文件夹。 src:代码空间(Source Space)build:编译空间(Build Space)devel:开发空间(Development Space)install:安装空间(Install Space) OK接下来创作工作空间&#…...

Pygame基础9-射击

简介 玩家用鼠标控制飞机&#xff08;白色方块&#xff09;移动&#xff0c;按下鼠标后&#xff0c;玩家所在位置出现子弹&#xff0c;子弹匀速向右飞行。 代码 没有什么新的东西&#xff0c;使用两个精灵类表示玩家和子弹。 有一个细节需要注意&#xff0c;当子弹飞出屏幕…...

Ps:颜色查找

颜色查找 Color Lookup命令通过应用预设的 LUT 来改变图像的色彩和调性&#xff0c;从而为摄影师和设计师提供了一种快速实现复杂色彩调整的方法&#xff0c;广泛应用于颜色分级、视觉风格的统一和创意色彩效果的制作。 Ps菜单&#xff1a;图像/调整/颜色查找 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 中&#xff0c;引入了一个新的对象类型 Proxy&#xff0c;它可以用来代理另一个对象&#xff0c;并可以在代理过程中拦截、覆盖和定制对象的操作。Proxy 对象封装另一个对象并充当中间人&#xff0c;其提供了一个捕捉器函数&#xff0c;可以在代理对象上拦截…...

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提供异步并发能力&#xff0c;适用于单次I/O任务的场景开发&#xff0c;本文以使用异步进行单次文件写入为例来提供指导。 实现单次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:一、进行测试用例设计的时候用到的方法有哪些&#xff1f; A:最常使用的测试用例设计方法包括等价类划分法、边界值分析方法、场景法、错误推测法。其中&#xff0c;最容易 发现错误的是边界值法&#xff0c;使用最多的是场景法。以注册为例&#xff1a;首先从需求确定用户名…...

javaAPI1

API application pragramming interface 应用程序编程接口 除java.lang包以外,其他包中的类在使用时需要导入 建包 package com.abc.javabean; 导包格式,import 包名.类名 API使用技巧 1,先看关键字 2,看参数列表 3,看返回值类型 String 封装字符串和处理字符串的类…...

案例研究|DataEase实现物业数据可视化管理与决策支持

河北隆泰物业服务有限责任公司&#xff08;以下简称为“隆泰物业”&#xff09;创建于2002年&#xff0c;总部设在河北省高碑店市&#xff0c;具有国家一级物业管理企业资质&#xff0c;通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今&#xff0c;隆…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...