关系(二)利用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快速绘制热图,并通过修改参数或者辅以其他绘图知识自定义各种各样的热图来适应相关使用场景。

共勉~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的SQL语句以及它们的作用和示

以下是一些常用的SQL语句以及它们的作用和示例: 1. **SELECT**:从数据库中检索数据 - 例子:SELECT * FROM employees; 2. **INSERT INTO**:向数据库表中插入新记录 - 例子:INSERT INTO employees (id, name, age) VALU…

Maximum Product(UVA 11059)

网址如下: Maximum Product - UVA 11059 - Virtual Judge (vjudge.net) (第三方网站) 简单枚举题,枚举就行,只是要注意数字太大导致“爆了”,用个long long int来记录 不过话说回来,关于数字…

【微服务】软件架构的演变之路

目录 单体式架构的时代单体式架构(Monolithic)优点缺点适用场景单体式架构面临诸多问题1.宽带提速,网民增多2.Web2.0时代的特点问题描述优化方向 集群优点缺点适用场景搭建集群后面临诸多问题用户请求问题用户的登录信息数据查询 改进后的架构 垂直架构优点缺点 分布…

OpenResty基于来源IP和QPS来限流

QPS限流 使用OpenResty进行限流的几种常见方法: 按QPS(每秒查询率)限流: 使用ngx_http_limit_req_module模块,可以限制每个客户端的请求速率。这个模块使用漏桶算法来控制请求的速率。 在Nginx配置文件中&#xff0…

实战 | YOLOv8自定义数据集训练实现手势识别 (标注+训练+预测 保姆级教程--含数据集)

导 读 本文将手把手教你用YoloV8训练自己的数据集并实现手势识别。 安装环境 【1】安装torch, torchvision对应版本,这里先下载好,直接安装 pip install torch-1.13.1+cu116-cp38-cp38-win_amd64.whlpip install torchvision-0.14.1+cu116-cp38-cp38-win_amd64.whl 安装好…

C#面:虚函数和抽象函数的区别

C#中的虚函数和抽象函数都是实现多态性的重要概念,但它们有一些区别。 定义方式: 虚函数:在基类中使用 virtual 关键字定义,可以在派生类中被重写。抽象函数:在抽象类或接口中使用abstract 关键字定义,必…

基于SSM的个性化点餐配送系统

基于SSM的个性化点餐配送系统 功能需求 本个性化点餐配配送系统总体上分为前端模块与后端模块,前端模块按照使用者的不同分为用户模块、商户模块、配送员模块。用户模块分为注册登录功能、个人信息修改功能、点餐功能。商家模块分为注册登录功能、商家信息修改功能…

FastAPI Web框架教程 第11章 请求响应的进阶用法

11-1 直接使用Request对象 关于请求的操作,比如从URL中提取路径参数,获取查询参数,获取请求头,获取Cookie,获取请求体中的数据;这些参数和值的获取非常方便,这是因为FastAPI帮我们创造便利。 F…

iOS系统文件路径解析:探索苹果手机中各类重要文件的存储位置

​ 目录 引言 用户登录工具和连接设备 查看设备信息,电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同,无法直接访问系统文件…

从《布瓦尔与佩库歇》实践中学习社会科学概论

从《布瓦尔与佩库歇》实践中学习社会科学概论 前情提要《布瓦尔与佩库歇》实践笔记云藏山鹰社会科学概论报告核心--信息形数身知™意合™意气实体过程意气实体过程宇宙学诠释™ 社会科学概论花间流风版导读,马斯克风格演讲[ 一尚韬竹团队供稿;] 内容展开…

音乐家马常旭当选为中华名人库委员会副主席

4月2日,据中华名人库官网显示,马常旭已当选为中华名人库委员会副主席。此前马常旭是一名音乐家、中国内地著名男歌手。 马常旭资料 马常旭,男,汉族,2002年10月生,辽宁大连人。现任中华名人库委员会副主席&…

数据结构第二版-陈越 第1章 概论

定义: 题或例子: 循环和递归两种方法 循环体不同

neutron 运维命令

OpenStack Neutron是OpenStack云计算平台的网络组件,负责管理和连接虚拟机(VM)和其他计算资源之间的网络。Neutron提供了一组API和插件,以便实现各种网络拓扑和服务,支持虚拟网络和物理网络的管理、配置和调度&#xf…

AtCoder Beginner Contest 347 (B,C,D,E)

B - Substring (atcoder.jp) 问题陈述 您将得到一个由小写英文字母组成的字符串 S 。 S 有多少不同的非空子字符串? 子字符串是一个连续子序列。例如, xxx 是 yxxx 的子字符串,但不是 xxyxx 的子字符串。 解析: 对于数据范围不超过100&…

vk-unicloud 框架 H5 浏览器无法登录访问 Client platform is h5, but web was found in config

最开始出现的bug 进入云函数查看日志 Client platform is h5, but web was found in config 把这个问题扔到百度是没有答案的,但是找到一个类似问题 :Client platform is app, but app-plus was found in config. 顺藤摸瓜到uniCloud的官方文档 关于pr…

MNN介绍安装编译详解

MNN是一个高效、轻量的深度学习框架,它支持深度模型的推理与训练,尤其在端侧的推理与训练性能在业界处于领先地位。MNN已经在阿里巴巴的多个App中使用,覆盖多个场景,同时在IoT等场景下也有若干应用。它支持TensorFlow、Caffe、ONN…

python coding with ChatGPT 专题2| 全解递归算法

文章目录 递归与栈的关系如何思考递归汉诺塔 经典题目入门:斐波那契数列分治法:归并排序树的递归遍历组合问题:子集搜索问题:N皇后 拓展阶乘的迭代法斐波那契数列迭代法青蛙跳 参考文献 掌握递归是解决许多编程问题的关键&#xf…

isaacgym 渲染黑屏

问题描述: isaacgym安装完IsaacGym_Preview_4_Package.tar.gz之后,运行python joint_monkey.py没有任何内容现实,但是终端还是正常输出信息。 环境是ubuntu22服务器,python3.8,nvidia Driver Version: 515.65.01 CUDA…

Google HTML/CSS 风格指南

1、Background 背景 本文档定义了 HTML 和 CSS 的格式和样式规则。它旨在 改善协作、代码质量并启用支持基础设施。 它适用于使用 HTML 和 CSS 的原始工作文件,包括 GSS 文件。 工具可以自由地混淆、缩小和编译,只要通用代码 保持质量。 2、常规 2.1、…

【JavaSE】解密 继承和多态(下)

前言 紧接着上篇 解密继承和多态(上)~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 protected关键字 在同一包下同一类可以访问 代码理解 在同一包下不同类可以访问 代码理解 …