• 利用Python创作热力图


    1. 引言

    热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。

    本文主要用Python来实现热力图的制作,样例如下:
    在这里插入图片描述
    闲话少说,我们直接开始吧!

    2. 读取图像

    首先,我们来读取样例图像,并对其进行相应的crop操作。
    样例代码如下:

    import numpy as np 
    import matplotlib.pyplot as plt
    import skimage.io as io
    img = plt.imread("butterfly-7320158_960_720.jpg")
    # crop
    img_cut = img[147:447,:,:]
    plt.figure()
    plt.imshow(img_cut)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行后,得到结果如下:
    在这里插入图片描述

    3. 图像灰度化

    由于热力图主要用于可视化二维矩阵,所以我们需要将彩色图转化为灰度图,代码如下:

    from skimage.color import rgb2gray
    gray_img = rgb2gray(img_cut)
    plt.imshow(gray_img,cmap='gray')
    
    • 1
    • 2
    • 3

    运行结果如下:
    在这里插入图片描述

    4. 像素化效果

    这一步的操作主要是为了使图像看起来像像素化的艺术品。我们首先将图像划分为非重叠block块。我们将block块的大小划分的越大,像素化程度看起来越高。

    对于每个block块,我们计算该块中一些代表值。在这里,我们可以使用整个块的最小值,最大值或中值。这里仅展示最小值的情形,代码如下:

    from skimage import util
    
    # select box size
    block_shape = (10, 10) 
    view = util.view_as_blocks(gray_img, block_shape)
    
    # collapse the last two dimensions in one
    flatten_view = view.reshape(view.shape[0], view.shape[1], -1)
    
    # choose min within box
    min_view = np.min(flatten_view, axis=2)
    
    plt.imshow(min_view,cmap='gray')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果如下:
    在这里插入图片描述

    5. 为热力图选择调色板

    这一步是我们创作热力图艺术效果自由度最高的步骤。seaborn调色板可能是一个很好的选择。我们来看一些不同风格的效果图:

    import seaborn as sns
    
    # save figure for LinkedIn recommended size (2000 width, 600 height)
    my_dpi=96
    plt.figure(figsize=(2000/my_dpi, 600/my_dpi), dpi=my_dpi) 
    sns.heatmap(max_view,xticklabels=False,yticklabels=False,cmap="coolwarm",cbar=False)
    plt.savefig("coolwarm.png",bbox_inches='tight')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果如下:
    在这里插入图片描述
    此外,viridis风格结果如下:
    在这里插入图片描述
    Spectral风格结果如下:
    在这里插入图片描述

    6. 总结

    本文介绍了如何在Python中一步一步地实现热力图艺术风格图,并展示了不同调色板设置下的效果图,并给出了相应的代码示例。

    您学废了嘛?

  • 相关阅读:
    【附源码】Python计算机毕业设计美容美发店会员管理系统
    玩转nginx的配置文件3
    详解数仓的向量化执行引擎
    Linux系统常用命令总结-2022
    go-sdk项目补充
    电脑磁盘怎么加密?磁盘加密软件哪个更好用?
    【面试题】线程池
    嵌入式系统中的FPGA
    ssm 基于springboot的车辆故障管理系统Java
    【JS 构造|原型|原型链|继承(圣杯模式)|ES6类语法】下篇
  • 原文地址:https://blog.csdn.net/sgzqc/article/details/126859527