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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
Python subprocess模块详细解读
Jan 29 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
Python PyCharm如何进行断点调试
Jul 05 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Python如何转换字符串大小写
Jun 04 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 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数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
js树形控件脚本代码
2008/07/24 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python如何实现转换URL详解
2019/07/02 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
python线程的几种创建方式详解
2019/08/29 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
python如何实现DES加密
2020/09/21 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
化妆品促销方案
2014/02/24 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
公司员工辞职信范文
2015/05/12 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
八年级历史教学反思
2016/02/19 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书