python heatmap画法

任务描述

将一个归一化的分数以热图的形式显示出来,分数高的地方颜色深,分数小的地方颜色浅
注意:使用单一颜色无法实现这种渐变过程

原理

将单通道的0-1之间的score值映射到三通道的颜色空间

原料

  1. 一个单通道的score矩阵
  2. 颜色空间列表,通过matplotlib.pyplot.get_cmap获得

工具

matplotlib.pyplotnumpycv2PIL.Image
常用的画法还有:plt.scatter,可直接对score进行映射显示

颜色参考

1、Miscellaneous colormaps系列:

可选:flag, prism,ocean, gist_earth, terrain, gist_stern,gnuplot,CMRmap,gnuplot2,cubehelix,brg,hsv,gist_rainbow,rainbow,jet,nipy_spectral,nipy_spectral,gist_ncar.
python heatmap画法_第1张图片

2、纯色渐变系列Sequential colormaps:

可选:Greys,Purples, Blues ,Greens,Oranges,Reds,YIOrBr,YIOrRd,PuRd,RdPu,GnPu,PuBu,YIGnBu,PuBuGn,BuGn,YIGn,
python heatmap画法_第2张图片

使用cmap

import matplotlib.pyplot as plt
G_map=score # a ndnrray of score ,dim:N X M
G_cmap = plt.get_cmap('BuGn') #得到对应的颜色空间列表,四通道,应该包含透明通道
G_color_block = (G_cmap(G_map)*255)[:,:,:3].astype(np.uint8)#[:,:,:3] 表示进行切片,去除了透明通道

G_color_block就是映射后的颜色值,可直接使用

为了是结果更加丝滑,一般会先对score进行模糊,例如高斯模糊

overlay = cv2.GaussianBlur(overlay,tuple((patch_size * (1-overlap)).astype(int) * 2 +1),0)

cv2.GaussianBlur的用法自行查询

结果展示(未使用模糊效果)

你可能感兴趣的:(python)