利用Python实现热力图的绘制
作者:赵卓不凡 发布时间:2021-11-07 12:02:47
标签: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风格结果如下:
来源:https://blog.csdn.net/sgzqc/article/details/126859527


猜你喜欢
- pandas中iloc()函数DataFrame.iloc纯基于整数位置的索引。import pandas as pdmydict = [{
- PostgreSQL引进“分区”表特性,解放了之前采用“表继承”+“触发器”来实现分区表的繁琐、低效。而添加分区,都是手动执行SQL。演示目
- 这是一个使用scrapy的ImagesPipeline爬取下载图片的示例,生成的图片保存在爬虫的full文件夹里。scrapy startp
- 从Keras转换成PB模型请注意,如果直接使用Keras2ONNX进行模型转换大概率会出现报错,这里笔者曾经进行过不同的尝试,最后都失败了。
- 前几天在一本书上看到一篇可以利用字典破解zip文件密码的文章,觉得比较有意思于是研究了一番,在这里分享一下原理主要是利用python里自带的
- 这篇文章主要介绍了基于python3实现倒叙字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 一、分支结构为了限定用户正规操作,也为了更好的控制程序的逻辑,必须在适当时引入条件结构。Python 条件语句是通过一条或多条语句的执行结果
- 本篇记录通过GO语言操作mongodb,实现的流程包括:初始化项目工程容器方式安装mongo调试运行和编译运行go使用mongo的代码如下,
- 在以前的一篇文章自动刷新 从BrowserSync开始中,我介绍了BrowserSync这样一个出色的开发工具。通过BrowserSync我
- 本文实例讲述了Python实现使用request模块下载图片。分享给大家供大家参考,具体如下:利用流传输下载图片# -*- coding:
- 一、ready函数的实现经常用jQuery类库或其他类库中的ready方法,有时候想想它们到底是怎么实现的,但是看了一下jQuery中的源码
- 最近群里好多人讨论oracle安全问题,今天找了些资料学习了下 获取Oracle当前会话的一些属性 (对于sql注射的环境判断很有用哦) S
- 介绍大家好,我是小F~在数据时代,我们每个人既是数据的生产者,也是数据的使用者,然而初次获取和存储的原始数据杂乱无章、信息冗余、价值较低。要
- 1,不用第三方库# coding: utf-8import loggingBLACK, RED, GREEN, YELLOW, BLUE,
- 阅读上一篇:定义网页的语言编码 用web标准设计网站,过渡的方法主要是采用XHTML+CSS,css样式表是必不可少的。这就要求所有网页设计
- 使用Python绘制正态分布曲线,借助matplotlib绘图工具;#-*-coding:utf-8-*-"""
- 今天遇到一个需要用javascript将url中的某些参数替换的需求,想起了不久前从网上淘到了一个parseUrl函数,正好可以借此实现,代
- super()函数可以用于继承父类的方法,语法如下:super(type[, object-or-type])虽然super()函数的使用比
- 所有标准的序列操作对字符串都适用,但字符串是不可变的字符串常量:单引号:‘spa"m'双引号:"spa'
- 一、用户管理在mysql库里有个user表可以查看已经创建的用户1.创建MySQL用户注意:MySQL中不能单纯通过用户名来说明用户,必须要