利用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
0
投稿
猜你喜欢
- 1、利用Python中的random模块中的choice方法random.choice()可以从任何序列,比如list列表中,选取一个随机的
- 同志们,经过不懈的努力,查了各种文档,终于鼓捣出了一个稍微像样一点的node项目,当然如果直接拿去项目里用,这个demo还太简单,毕竟一个完
- 过滤html代码的函数,当然也可以使用正则表达式。<%Function FilterHTML(strToFilter)&nb
- 在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在seri
- 不同于行级或页级锁定的选项:· 版本(例如,为并行的插入在MySQL中使用的技术),其中可以一个写操作,同时有许多读取操作。这明数据库或表支
- 如何提高SQL Server数据库的性能,该从哪里入手呢?笔者认为,该遵循从外到内的顺序,来改善数据库的运行性能。如下图: 第一层
- 关于在asp中不使用组件使得脚本sleep的办法还比较少见,可能比较好的办法是创建同步的xmlhttp request,直到获得的时间达到某
- 这篇文章主要介绍了Python实现自定义读写分离代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- //TransmitFile实现下载protected void Button1_Click(object sender, EventArg
- Access SQL 函数 收藏 ▲日期/时间CDate 将字符串转化成为日期 select CDate("2005/
- 上次说到的,使用如下代码保存矢量图时,放在外侧的图例往往显示不完整:import numpy as npimport matplotlib.
- 使用MySQL,安全问题不能不注意。以下是MySQL提示的23个注意事项:1.如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就
- 装饰器基本概念大家都知道装饰器是一个很著名的设计模式,经常被用于 AOP (面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,
- 这个函数是前几年刚流行小偷程序的时候,偶写来用于小偷程序中截取代码的;可能有些朋友在我以前的代码中看见过了,但没有写用法,现在把调用方法及使
- 错误提示Invalid byte 1 of 1-byte UTF-8 sequence原因分析在中文版的window下java的默认的编码为
- 目录前言1、字符串模板的参数2、格式控制符3、格式化操作符辅助符总结前言Python的%操作符可用于格式化字符串,控制字符串的呈现格式。使用
- 可以的,看看下面的代码和说明:<%sessionID = session.SessionIDtimeout&nbs
- 在各类的前端开发工具里,在功能上虽然Editplus显得有些“单薄”,但是仍然是很多我辈做开发的人们离不开的工具,因为他小巧,语言高亮,支持
- 作为设计主管,Peter Stern 已经领导 microsoft.com 重新设计了主页并且开发了五个不同的交互工具,这些工具被用于下载中
- ORACLE EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁