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在多玩图片上下载妹子图的实现代码
Aug 13 Python
python实现斐波那契递归函数的方法
Sep 08 Python
Python 多线程实例详解
Mar 25 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
python虚拟环境完美部署教程
Aug 06 Python
flask 实现token机制的示例代码
Nov 07 Python
OpenCV中VideoCapture类的使用详解
Feb 14 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
Python通过Pillow实现图片对比
Apr 29 Python
Python爬虫爬取微信朋友圈
Aug 06 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的知识
2006/11/17 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
Python的词法分析与语法分析
2013/05/18 Python
python中as用法实例分析
2015/04/30 Python
python对html代码进行escape编码的方法
2015/05/04 Python
Python操作MySQL数据库的方法
2018/06/20 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python实现统计代码行数的小工具
2019/09/19 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
秘书专业自荐信范文
2013/12/26 职场文书
公证书标准格式
2014/04/10 职场文书
公司承诺函范文
2015/01/21 职场文书
寒假致家长的一封信
2015/10/10 职场文书
服务器nginx权限被拒绝解决案例
2022/09/23 Servers