使用matplotlib绘制热图(heatmap)全过程

 更新时间:2022年12月17日 12:18:52   作者:coder_Gray  
这篇文章主要介绍了使用matplotlib绘制热图(heatmap)全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

matplotlib绘制热图(heatmap)

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()

效果图如下

为了更清晰地看出二维数值矩阵与热图之间的对应关系,我们输出二维矩阵:

[[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中移除List重复项的五种方法

    Python中移除List重复项的五种方法

    本文列些处几种去除在Python 列表中(list)可能存在的重复项,这在很多应用程序中都会遇到的需求,本文介绍几种方法,感兴趣的可以了解一下
    2021-05-05
  • python3通过qq邮箱发送邮件以及附件

    python3通过qq邮箱发送邮件以及附件

    这篇文章主要为大家详细介绍了python3通过qq邮箱发送邮件以及附件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 通过实例解析python and和or使用方法

    通过实例解析python and和or使用方法

    这篇文章主要介绍了通过实例解析python and和or使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 基于python实现操作redis及消息队列

    基于python实现操作redis及消息队列

    这篇文章主要介绍了基于python操作redis及消息队列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • PyTorch搭建ANN实现时间序列风速预测

    PyTorch搭建ANN实现时间序列风速预测

    这篇文章主要为大家介绍了PyTorch搭建ANN实现时间序列风速预测,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • OpenCV+python手势识别框架和实例讲解

    OpenCV+python手势识别框架和实例讲解

    今天小编就为大家分享一篇OpenCV+python手势识别框架和实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Python 列表(list)的常用方法

    Python 列表(list)的常用方法

    这篇文章主要介绍了Python 列表(list)的常用方法,这节主要讲列表,列表用于存储任意数目、任意类型的数据集合,本文通过示例代码给大家详细讲解,需要的朋友可以参考下
    2023-05-05
  • Python pip安装模块提示错误解决方案

    Python pip安装模块提示错误解决方案

    这篇文章主要介绍了Python pip安装模块提示错误解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • python3 scrapy框架的执行流程

    python3 scrapy框架的执行流程

    Scrapy的安装有多种方式,它支持Python2.7版本及以上或Python3.3版本及以上。下面说明python3 scrapy框架的常用命令及框架执行流程,感兴趣的朋友一起看看吧
    2021-07-07
  • Python Logging 日志记录入门学习

    Python Logging 日志记录入门学习

    这篇文章主要介绍了Python Logging 日志记录入门学习,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论