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导出Excel图表以及导出为图片的方法
Nov 07 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python3中列表list合并的四种方法
Apr 19 Python
使用python实现ftp的文件读写方法
Jul 02 Python
python zip,lambda,map函数代码实例
Apr 04 Python
python实现文字版扫雷
Apr 24 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
python 实用工具状态机transitions
Nov 21 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
Django利用AJAX技术实现博文实时搜索
May 06 Python
PyTorch dropout设置训练和测试模式的实现
May 27 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 VS ASP
2006/10/09 PHP
php 清除网页病毒的方法
2008/12/05 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Python 字符串操作方法大全
2014/03/11 Python
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
Python模拟登陆实现代码
2017/06/14 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
python实现图片插入文字
2019/11/26 Python
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
办公室内勤工作职责
2013/12/11 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
售房委托书
2014/08/30 职场文书
付款委托书范本
2014/10/05 职场文书
思想作风建设心得体会
2014/10/22 职场文书
经费申请报告范文
2015/05/18 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS