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中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
python之pandas用法大全
Mar 13 Python
Python 实现网页自动截图的示例讲解
May 17 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
Python 2.7中文显示与处理方法
Jul 16 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
Python面向对象编程基础实例分析
Jan 17 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 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字符串 ==比较运算符的副作用
2009/10/21 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
javascript 使td内容不换行不撑开
2012/11/29 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
vuex的使用步骤
2021/01/06 Vue.js
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
Python中的heapq模块源码详析
2019/01/08 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
python实现车牌识别的示例代码
2019/08/05 Python
如何使用repr调试python程序
2020/02/28 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
Linux的主要特性
2016/09/03 面试题
医院护士专业个人的求职信
2013/12/09 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书