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调用浏览器并打开一个网址的例子
Jun 05 Python
Python多线程编程(六):可重入锁RLock
Apr 05 Python
python删除服务器文件代码示例
Feb 09 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
numpy中的ndarray方法和属性详解
May 27 Python
Python实现Selenium自动化Page模式
Jul 14 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
python读文件的步骤
Oct 08 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Python3 元组tuple入门基础
Feb 09 Python
django注册用邮箱发送验证码的实现
Apr 18 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
php获取apk包信息的方法
2014/08/15 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
python+selenium+autoit实现文件上传功能
2017/08/23 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
django url到views参数传递的实例
2019/07/19 Python
超简单的Python HTTP服务
2019/07/22 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
大学本科毕业生的自我鉴定
2013/11/26 职场文书
高一化学教学反思
2014/02/05 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
《春笋》教学反思
2014/04/15 职场文书
合伙经营协议书
2014/04/18 职场文书
2014年教师节寄语
2014/08/11 职场文书
孝女彩金观后感
2015/06/10 职场文书
应收账款管理制度
2015/08/06 职场文书
医院病假条怎么写
2015/08/17 职场文书
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫