利用Python实现热力图的绘制

 更新时间:2022年09月15日 08:41:15   作者:赵卓不凡  
热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。本文主要用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)

运行后,得到结果如下:

3. 图像灰度化

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

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

运行结果如下:

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

运行结果如下:

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

结果如下:

此外,viridis风格结果如下:

Spectral风格结果如下:

到此这篇关于利用Python实现热力图的绘制的文章就介绍到这了,更多相关Python热力图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决pycharm py文件运行后停止按钮变成了灰色的问题

    解决pycharm py文件运行后停止按钮变成了灰色的问题

    今天小编就为大家分享一篇解决pycharm py文件运行后停止按钮变成了灰色的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 利用Python判断你的密码难度等级

    利用Python判断你的密码难度等级

    很多网站在用户注册账号的时候为了保证账户的安全,都会自动检测用户密码的强度并给出提醒让用户设置一个相对安全的密码。这篇文章主要给大家介绍了关于利用Python判断你的密码难度等级,需要的朋友可以参考下
    2021-06-06
  • Python股票开源库akshare的具体使用

    Python股票开源库akshare的具体使用

    AKShare是一个开源财经数据接口库,本文主要介绍了Python股票开源库akshare的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • python文件操作seek()偏移量,读取指正到指定位置操作

    python文件操作seek()偏移量,读取指正到指定位置操作

    这篇文章主要介绍了python文件操作seek()偏移量,读取指正到指定位置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python条件语句与循环语句

    Python条件语句与循环语句

    这篇文章主要介绍了Python条件语句与循环语句,条件语句就是通过指定的表达式的运行结果来判断当前是执行还是跳过某些指定的语句块,循环语句就是对某些语句的重复执行,这个重复执行是通过指定表达式来控制的,下面来看具体内容及续航管案例吧,需要的朋友可以参考一下
    2021-11-11
  • python多进程并发的实现示例

    python多进程并发的实现示例

    python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程,本文主要介绍了python多进程并发的实现示例,感兴趣的可以了解一下
    2024-02-02
  • Python-pandas返回重复数据的index问题

    Python-pandas返回重复数据的index问题

    这篇文章主要介绍了Python-pandas返回重复数据的index问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python3利用tcp实现文件夹远程传输

    python3利用tcp实现文件夹远程传输

    这篇文章主要为大家详细介绍了python3利用tcp实现文件夹远程传输,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑

    如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑

    这篇文章主要介绍了如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • django时区问题的解决

    django时区问题的解决

    我们都知道时区,标准时区是UTC时区,django默认使用的就是UTC时区,我们希望存储在数据库中的时间就是本地时间(东八区的时间),那么应该怎么设置,就一起来了解一下
    2021-05-05

最新评论