利用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热力图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 获取键盘输入,同时有超时的功能示例

    python 获取键盘输入,同时有超时的功能示例

    今天小编就为大家分享一篇python 获取键盘输入,同时有超时的功能示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 解决Django一个表单对应多个按钮的问题

    解决Django一个表单对应多个按钮的问题

    今天小编就为大家分享一篇解决Django一个表单对应多个按钮的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • numpy中np.sort返回索引的具体使用

    numpy中np.sort返回索引的具体使用

    本文主要介绍了使用numpy中np.sort函数返回索引的详细解释和使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Python使用scrapy采集数据过程中放回下载过大页面的方法

    Python使用scrapy采集数据过程中放回下载过大页面的方法

    这篇文章主要介绍了Python使用scrapy采集数据过程中放回下载过大页面的方法,可实现限制下载过大页面的功能,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • python绘制饼图的方法详解

    python绘制饼图的方法详解

    这篇文章主要为大家详细介绍了python绘制饼图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Python三级菜单的实例

    Python三级菜单的实例

    下面小编就为大家带来一篇Python三级菜单的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • python的Jenkins接口调用方式

    python的Jenkins接口调用方式

    这篇文章主要介绍了python的Jenkins接口调用方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python pandas用法最全整理

    Python pandas用法最全整理

    在本篇文章里小编给大家分享的是关于Python pandas用法以及相关实例代码,需要的朋友们可以学习下。
    2019-08-08
  • 爬山算法简介和Python实现实例

    爬山算法简介和Python实现实例

    这篇文章主要介绍了爬山算法,爬山法(climbing method)是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)然后用Python实现了这个算法,需要的朋友可以参考下
    2014-04-04
  • python爬虫框架scrapy实战之爬取京东商城进阶篇

    python爬虫框架scrapy实战之爬取京东商城进阶篇

    这篇文章主要给大家介绍了利用python爬虫框架scrapy爬取京东商城的相关资料,文中给出了详细的代码介绍供大家参考学习,并在文末给出了完整的代码,需要的朋友们可以参考学习,下面来一起看看吧。
    2017-04-04

最新评论