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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
跟老齐学Python之Import 模块
Oct 13 Python
在Python中使用Neo4j数据库的教程
Apr 16 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
Python3中exp()函数用法分析
Feb 19 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
怎样在php中使用PDF文档功能
2006/10/09 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
银行见习期自我鉴定
2014/01/29 职场文书
中学劳技课教师的自我评价
2014/02/05 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
大学新闻系自荐书
2014/05/31 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python