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模块restful使用方法实例
Dec 10 Python
用Python编写简单的微博爬虫
Mar 04 Python
用python找出那些被“标记”的照片
Apr 20 Python
Django开发中复选框用法示例
Mar 20 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python3+PyQt5实现拖放功能
Apr 24 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
python之array赋值技巧分享
Nov 28 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 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
农民和部队如何穿矿
2020/03/04 星际争霸
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php与php MySQL 之间的关系
2009/07/17 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
PHP的全局错误处理详解
2016/04/25 PHP
PHP精确计算功能示例
2016/11/29 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
javascript获取当前ip的代码
2009/05/10 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
浅析vue中的MVVM实现原理
2019/03/04 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
python看某个模块的版本方法
2018/10/16 Python
如何运行带参数的python脚本
2019/11/15 Python
CSS3 旋转立方体问题详解
2020/01/09 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
企业总经理任命书
2014/06/05 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS