matplotlib 热力图_5分钟入门 Seaborn 热力图可视化

49285156b67e2578a16d8e31d1a667b4.png

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

11e2ea417749c3198613351ffa8504a4.png

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

heatmap 热力图

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

759e52e0e966084ed51bb0ffd7fadd34.png

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

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

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

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

1fb27232420a60fad2e110d63380d9e5.png

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

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

ad4fc5f2eee08971ee98e32d90515cd1.png

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

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

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

32353a91abd7774a90bddeebb77ba7db.png

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

cmap:设置颜色带的色系

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

8b592388edf201a46379ba80c085d89f.png

好像变好看了?

center:设置颜色带的分界线

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

    01cedc5a5d1cb1292b334647336302a5.png

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

annot:是否显示数值注释

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

dd59442dfdf32035f7e52f671282bfd3.png

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

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

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

be752c94e7dc30e831f6638a7318a270.png

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

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

34a38ded620df11c38bf906a39c8f8eb.png

linecolor:控制分割线的颜色

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

772d89398f84d9c9ded3b59dff71f683.png

cbar_kws:关于颜色带的设置

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

2679685a99e1a43c81844ef4594b797d.png

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

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

6f576772d91d7da84a22cc0a3fecbc85.png

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

a67355b5c4e366d99adbf8d581d599ea.png

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

45b1cb6794fd51070a88ff824105219b.png▼ 点击成为社区注册会员      喜欢文章,点个在看0b9b918a971287cf3465742d8d510a3b.png

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

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

相关文章

换乐网GridFS应用分析

GridFS是MongoDB提供的一种存储大文件的规范,文件在存储的过程中会分成一小块一小块(chunks),文件的信息会保存在另外一个集合中。 通过MD5校验过滤重复上传文件 在换乐网中,所有用户上传的文件都会保存在GridFS中: …

JavaWeb学习过程 之c3p0的使用

这几天在学习使用MVC模式来做几个小项目,在学习的过程中,用到了数据库连接池。便特意去学习了一下。 一、谈一谈为什么要使用数据库连接池 在开发基于数据库的web程序时,传统的模式(在servlet,beans 中建立数据库链接&…

python爬虫高级项目管理师培训学校_推荐一条高效的Python爬虫学习路径!

如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得简单、容易上手。对于小白…

redis报错:jedis connection exception unexpected end of stream

一般的话,原因是你在spring中把jedis客户端配置成了单例模式(singleton),所以当在极短时间内,有多个请求连续发送过来时,jedis就会报错,说一个连接还没结束。 所以正确的配置是,将jedis配置成原…

Linq(拓展方法+select())

拓展方法: 目的:对于已存在类型的行为进行拓展 注意事项: 1:扩展方法必须是一种特殊的静态方法 2:扩展方法必须是在静态类中 3: 扩展方法的优先级低于同名类的方法 4:扩展方法只在特定的命名空间内有效 5&a…

Spring MVC:The request sent by the client was syntactically incorrect

一般是由于参数类型不正确所致。比如表单如下&#xff1a; <form:form action"" method"post" commandName"shop"><form:hidden path"id"/><form:input type"text" path"shopName" /><inpu…

Android中解析XML

Android中解析XML转载于:https://www.cnblogs.com/zhujiabin/p/5895340.html

手机全部零件名称图片_【直播课】一条记录中显示多张图片

↑点击上方“Access软件网”免费订阅温馨提示这是一节免费课&#xff0c;干货太多&#xff0c;强烈推荐&#xff01;今天(2019年1月10日)晚上8点&#xff0c;准时开讲&#xff0c;欢迎大家前来听课&#xff01;点击文章末尾左下角的原 理本课示例是显示某个零件的图片&#xf…

Spring MVC使用指示符重定向

在JSP中&#xff0c;可以使用response.sendRedirect("");来重定向&#xff0c;但这条语句不会终止函数执行&#xff0c;即执行完这条语句之后&#xff0c;后面的语句还会执行&#xff0c;这就会造成一些问题。 例如有如下显示店铺的控制器&#xff0c;如果用户设置类…

微信小程序会改变大世界吗?

微信小程序来了&#xff0c; 我们期待很久。关于“小程序”的信息还不是很多&#xff0c;但结合官方的表述已经可以看到一些端倪了。微信小程序会改变大世界吗&#xff1f;以下是徐磊的观点 “应用号”怎么变成“小程序”了 官方的表述里&#xff0c;小程序和原有的三种公众号是…

python筛选法求素数讲解_埃氏筛选法求素数 Python

代码如下def _odd_iter(): # 构建奇数序列 从3开始n 1while True:n n 2yield ndef _not_divisible(n):return lambda x: x % n > 0def primes():yield 2it _odd_iter()while True:n next(it) # 返回序列中的数yield nit filter(_not_divisible(n), it) # 埃氏筛选法,产…

JS循环执行函数setInterval

setInterval&#xff0c;每隔一个时间段执行一遍函数。 调用方法&#xff1a; setInterval&#xff08;functionname,time&#xff09;; 注意&#xff1a;functionname不能带括号&#xff0c;如果要传参要使用另外的方法&#xff0c;否则函数只会执行一次。

android学习的一点点网站资料

一些android的网站资料&#xff0c;可供一些基础者学习和了解&#xff0c;对于大神来说可能就比较小儿科了&#xff0c;主要也是给自己在项目中有时候会遇到某个功能做参考。如果哪位读者有其它的学习资料也可留言共享哈&#xff0c;再次先说声谢谢&#xff01; http://www.run…

python中表达式4**0.5的值为_Python内置函数__用来返回序列中的最小元素

【填空题】表达式 int(4**0.5) 的值为【判断题】34j不是合法的Python表达式。【填空题】已知列表对象x [‘11’, ‘2’, ‘3’],则表达式 max(x) 的值为【填空题】表达式 sum(range(10)) 的值为【判断题】Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类…

Spring MVC Ajax返回中文乱码

因为Spring MVC中返回json要使用ResponseBody注解&#xff0c;而在Spring源码中这个注解的默认编码是“iso-8859-1”&#xff0c;所以传中文的话会乱码。解决办法是&#xff0c;直接使用response的writer来返回json数据。 RequestMapping(path"/receive",methodReque…

OC Swift中UITextFiled、UITextView限制输入字数

OC中限制字数的方法 我是用通知实现的&#xff0c;首先添加UITextFiled和UITextView的接收中心 [[NSNotificationCenter defaultCenter] addObserver:self selector:selector(textViewNotifitionAction:) name:UITextViewTextDidChangeNotification object:nil];[[NSNotificati…

snmp获取交换机日志_日志审计系统和数据库审计系统的区别

今天就易混淆的日志审计系统与数据库审计系统进行辨析。从日志审计系统和数据库审计系统的技术特点和原理来切入&#xff0c;来分析日志审计系统与数据库审计系统的异同。01、日志审计系统系统日志系统日志是记录系统中硬件、软件和系统问题的信息&#xff0c;同时还可以监视系…

java web开发基础学习

由于以前很少用java开发&#xff0c;至于连myEclipse都不怎么熟悉。 1、使用myEclipse生成部署网站步骤。 选tomcat后点击右边的Redeploy 这样便在tomcat目录下生成了一个部署网站文件。 2、使用myEclipse调试web步骤 将project下拉中所有项目的server全部remove. 留下需要调试…

装B指南之使用浏览器播放电影

家里断网了&#xff0c;女票说要看电影。电影之前早已下好&#xff0c;奈何播放器不给力&#xff0c;播放不了rmvb格式&#xff0c;怎么办&#xff1f; 办法很简单&#xff0c;使用浏览器来播放&#xff01;现在的浏览器都内置了视频的解码器&#xff0c;直接将视频拖进浏览器…

python 导入包 作用域_Python 包、模块、函数、变量作用域

Python 项目的组织结构- 包-- 模块--- 类---- 函数、变量Python是利用包和模块来组织一个项目的。包&#xff1a; 包的物理表现是一个文件夹&#xff0c;但是一个文件夹却不一定是个包&#xff0c;要想让个文件夹成为一个包&#xff0c;就必须在这个文件夹下增加个特定的文件 _…