怎么利用Python创作热力图
这篇文章主要介绍“怎么利用Python创作热力图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么利用Python创作热力图”文章能帮助大家解决问题。
1. 引言
热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。
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')
关于“怎么利用Python创作热力图”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341