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分割和拼接字符串
Nov 01 Python
python中循环语句while用法实例
May 16 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
python实现邮件自动发送
Aug 10 Python
PyCharm 2019.3发布增加了新功能一览
Dec 08 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
Python 图片处理库exifread详解
Feb 25 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中的一个中文字符串截取函数
2007/02/14 PHP
php Mysql日期和时间函数集合
2007/11/16 PHP
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
JS获取父节点方法
2009/08/20 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
python模块之StringIO使用示例
2015/04/08 Python
python爬虫的工作原理
2017/03/05 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Python PIL库图片灰化处理
2020/04/07 Python
pandas数据处理之绘图的实现
2020/06/15 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
学生会招新宣传语
2015/07/13 职场文书
员工试用期工作总结
2019/06/20 职场文书
redis限流的实际应用
2021/04/24 Redis
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python