python使用matplotlib绘制热图


Posted in Python onNovember 07, 2018

python常用的绘图库就是matplotlib,今天在给公司绘图时,偶然间发现matplotlib可以绘制热图,并且十分简洁,拿出来跟大家分享一下。(由于涉及到公司数据问题,这里采用随机数生成数据进行实验)

import random
from matplotlib import pyplot as plt
from matplotlib import cm
from matplotlib import axes
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='/Library/Fonts/Songti.ttc')
 
def draw():
 #定义热图的横纵坐标
 xLabel = ['A','B','C','D','E']
 yLabel = ['1','2','3','4','5']
 
 #准备数据阶段,利用random生成二维数据(5*5)
 data = []
 for i in range(5):
  temp = []
  for j in range(5):
   k = random.randint(0,100)
   temp.append(k)
  data.append(temp)
 
 #作图阶段
 fig = plt.figure()
 #定义画布为1*1个划分,并在第1个位置上进行作图
 ax = fig.add_subplot(111)
 #定义横纵坐标的刻度
 ax.set_yticks(range(len(yLabel)))
 ax.set_yticklabels(yLabel, fontproperties=font)
 ax.set_xticks(range(len(xLabel)))
 ax.set_xticklabels(xLabel)
 #作图并选择热图的颜色填充风格,这里选择hot
 im = ax.imshow(data, cmap=plt.cm.hot_r)
 #增加右侧的颜色刻度条
 plt.colorbar(im)
 #增加标题
 plt.title("This is a title", fontproperties=font)
 #show
 plt.show()
 
d = draw()

效果图如下:

python使用matplotlib绘制热图

为了更清晰地看出二维数值矩阵与热图之间的对应关系,我们输出二维矩阵:

[[17, 96, 11, 99, 83], [18, 17, 58, 18, 80], [87, 79, 15, 53, 4], [86, 53, 48, 36, 23], [25, 4, 94, 100, 71]]

从对应关系我们可以看出,图像的左上角为坐标原点,第一行对应的二维矩阵中的第一行数据,以此类推。
同时我们可以看出数值越大的单元,对应热图中的颜色越深。其实这是一个可选项,只需要改变im = ax.imshow(data, cmap=plt.cm.hot_r)中的参数cmap为hot_r,其中_r的意思是就是按照颜色越深,数值越大,如果想数值越大,颜色越浅,只需要去掉_r,直接为hot就行。同时这个hot是热图配色的其中一个主题,主题色参数可选:

  • hot 从黑平滑过度到红、橙色和黄色的背景色,然后到白色。
  • cool 包含青绿色和品红色的阴影色。从青绿色平滑变化到品红色。
  • gray 返回线性灰度色图。
  • bone 具有较高的蓝色成分的灰度色图。该色图用于对灰度图添加电子的视图。
  • white 全白的单色色图。
  • spring 包含品红和黄的阴影颜色。
  • summer 包含绿和黄的阴影颜色。
  • autumn 从红色平滑变化到橙色,然后到黄色。
  • winter 包含蓝和绿的阴影色。

右侧的颜色刻度条colorbar也是可选的,如果不写就不会显示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门篇之对象类型
Oct 17 Python
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python中的Matplotlib模块入门教程
Apr 15 Python
python3实现短网址和数字相互转换的方法
Apr 28 Python
详解Python3中的Sequence type的使用
Aug 01 Python
django query模块
Apr 20 Python
Python中的引用知识点总结
May 20 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
python issubclass 和 isinstance函数
Jul 25 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
Python importlib动态导入模块实现代码
Apr 16 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 #Python
Python将一个Excel拆分为多个Excel
Nov 07 #Python
python计算两个矩形框重合百分比的实例
Nov 07 #Python
numpy 计算两个数组重复程度的方法
Nov 07 #Python
python中for循环输出列表索引与对应的值方法
Nov 07 #Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 #Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 #Python
You might like
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
php中switch语句用法详解
2015/08/17 PHP
php实现word转html的方法
2016/01/22 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
vue-video-player 断点续播的实现
2021/02/01 Vue.js
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python Flask 装饰器顺序问题解决
2018/08/08 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
python编写微信公众号首图思路详解
2019/12/13 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
tensorflow常用函数API介绍
2020/04/19 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
python 实现音频叠加的示例
2020/10/29 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
初一英语教学反思
2014/01/11 职场文书
中英文求职信范文
2015/03/19 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
基于Golang 高并发问题的解决方案
2021/05/08 Golang