热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

csv转为矩阵python_Python可视化|Seaborn5分钟入门(六)——heatmap热力图

Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API
01a5077991b8783229b8ce5cefd4a1de.png

Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。

b11a63be0263333221516bee63980048.png

注:所有代码均在IPython notebook中实现

heatmap 热力图

热力图在实际中常用于展示一组变量的相关系数矩阵,在展示列联表的数据分布上也有较大的用途,通过热力图我们可以非常直观地感受到数值大小的差异状况。heatmap的API如下所示:

038053902bacab05ee9e9461e7b8256d.png

下面将演示这些主要参数的用法,第一件事还是先导入相关的packages。

import seaborn as sns
%matplotlib inline
sns.set(font_scale=1.5)

本次演示采用的数据集是Seaborn中内置的flights航班数据集:

#导入数据集后按年月两个维度进行数据透视
data=sns.load_dataset("flights").pivot("month","year","passengers")
data.head()

553e5b14cf82162f82ff9f88adfee7a7.png

如上图所示,dataframe中的数据代表了1949年-1960年每个月的航班乘客数量,接下来热力图就隆重登场啦!

sns.set_context({"figure.figsize":(8,8)})
sns.heatmap(data=data,square=True)
#可以看到热力图主要展示的是二维数据的数据关系
#不同大小的值对应不同的颜色深浅

7b288ab58ffb7e1d2658c50f62a5d06a.png

热力图的右侧是颜色带,上面代表了数值到颜色的映射,数值由小到大对应色彩由暗到亮。从上面的heatmap中我们可以得到两层信息,一是随着时间的推移,飞机的乘客数量是在逐步增多的,二是航班的乘坐旺季在七月和八月份。下面就具体的参数进行演示。

vmax:设置颜色带的最大值vmin:设置颜色带的最小值

sns.heatmap(data=data,vmin=200,vmax=500)

40712cf0769b81e431ac2483e28abed3.png

可以看到右侧的颜色带最大最小值变了,而heatmap中颜色映射关系也会随之调整,将本图和上面的图进行对比便一目了然。

cmap:设置颜色带的色系

sns.heatmap(data=data,cmap="RdBu_r")

29633ff2d095cb301c613c83cb0bcccb.png

好像变好看了?

center:设置颜色带的分界线

sns.heatmap(data=data,cmap="RdBu_r",center=300)

17b7f8033975d38cd89388d3e35b7e5b.png

细心的朋友可以察觉到颜色带上色彩两级的分界线变成了300

annot:是否显示数值注释

sns.heatmap(data=data,annot=True,cmap="RdBu_r")

a992ad024bf8ae6f6e305a8379d36274.png

怎么回事?乱码了吗?其实数值注释默认显示的是科学记数法的数值,我们得把数值进行格式化,这就用到了下面的参数。

fmt:format的缩写,设置数值的格式化形式

sns.heatmap(data=data,annot=True,fmt="d",cmap="RdBu_r")
#foramt为int类型

29f0884a30a02bf302ead9e10ab74e3e.png

linewidths:控制每个小方格之间的间距

sns.heatmap(data=data,annot=True,fmt="d",linewidths=0.3,cmap="RdBu_r")
#可以看到每个小方格之产生了间隙

49734047e4469eaee0f701846c044dbd.png

linecolor:控制分割线的颜色

sns.heatmap(data=data,annot=True,fmt="d",linewidths=0.3,linecolor="grey",cmap="RdBu_r")
#原来的白色间隙变成了灰色间隙

4b8094c91facad8c7060189970e04152.png

cbar_kws:关于颜色带的设置

sns.heatmap(data=data,annot=True,fmt="d",cmap="RdBu_r",cbar_kws={"orientation":"horizontal"})
#横向显示颜色帮

1ffefe4376d7a20079af97bba7458222.png

mask:传入布尔型矩阵,若为矩阵内为True,则热力图相应的位置的数据将会被屏蔽掉(常用在绘制相关系数矩阵图)

import numpy as np
#随机生成一个200行10列的数据集
data_new = np.random.randn(200,10)
#求出这个数据集的相关系数矩阵 corr = np.corrcoef(data_new,rowvar=False)
#以corr的形状生成一个全为0的矩阵
mask = np.zeros_like(corr)
#将mask的对角线及以上设置为True
#这部分就是对应要被遮掉的部分mask[np.triu_indices_from(mask)] = True
with sns.axes_style("white"):sns.heatmap(corr, mask=mask, vmax=0.3, annot=True,cmap="RdBu_r")

5b3b5c6d02648c1e17babf7d8fa96eaa.png

如果大家对上面的代码流程不大了解,可以把mask打印出来看看

85fab3411903516d6aa24fc3c57bf3a0.png

参照mask和上面绘制的图,应该就很容易理解了,mask中为1的部分,就是要被盖掉的部分。演示到此为止,想更深入的学习可以自行查阅官方文档

原创不易,如果觉得有点用,希望可以随手点个赞,拜谢各位老铁。



推荐阅读
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
author-avatar
业余爱好者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有