热图
通过热图可以简单地聚合大量数据,并使用一种渐进的色带来优雅地表现,最终效果一般优于离散点的直接显示,可以很直观地展现空间数据的疏密程度或频率高低。但也由于很直观,热图在数据表现的准确性并不能保证。
原理
生成热图需要四个基本步骤,即
创建缓冲区
填充缓冲区
缓冲区灰度叠加
颜色映射
其中颜色映射根据RGB三通道中的色带中映射后对图像重新着色,实现热力图
交互式热图
交互式热图绘制,分析数据相关性。
heatmap(热图)常用于高维数据的可视化。
数据集中的数据按照矩阵形式,编码为彩色的网格结构。热图常附有树状图。
热图应用领域很多,如基因、相关性、缺失值等。
heatmaply包
heatmaply包能够生成交互式地图,鼠标悬停可查看数值信息、拖动局部可放大查看。

载入相关包:
通过library函数将所需要的可视化包进行载入
首先分析所需要的相关包,然后进行载入,本项目中所用的包有:
dplyr
purrr
tidyr
tidybayes
ggridges
cowplot
rstan
brms
gganimate
ggplot2
通过library(“packagename”)将以上包挨个完成载入。
其中载入packages——heatmaply包依赖ggplot2包,载入heatmaply之前需装载相关的依赖包。MacOS在绘制heatmaply时,将自动调用XQuartz插件,如没有绘制成功,可从官网下载安装XQuartz。
R是一款开源软件,先进入官网可以看到官网提供不同的R软件提供我们下载,我们根据电脑的系统进行选择,而后镜像选择距离我们地域位置最近的地区进行安装,我们可以看到有很多国家支持R镜像维护,我们找到CHINA清华镜像进行下载,进入下载界面进入点击蓝色字体可以下载最新的版本R,额外下载的XQuartz插件已经不再包中提供,我们首先官网中下载XQuartz插件然后进行对应安装就可以了。
接下来我们通过代码载入heatmaply包,代码如下:
> library(ggplot2)
> library("heatmaply")
基础绘图
使用heatmaply包默认参数绘制交互式热图,代码如下:
> heatmaply(mtcars)

们的鼠标悬停在矩阵将显示对应的数值,其中的heatmaply( )函数作用是绘制交互热图。使用默认设置、参数
边距调整:
边距调整的函数为margins( ),其功能为对边距进行设置
参数调整代码如下:

相关性:
使用margins()函数中的参数调整进行绘制相关性,代码如下:

用颜色限制调用相关性:

其中我们需要补充一个限制函数limits()
limits( ):限制相关性颜色,相关性的颜色设置,其参数为k_col, k_row颜色通过dendextend::color_branches控制
设置颜色也可以用如下代码进行设置:
> heatmaply_cor(cor(mtcars), margins = c(40, 40), k_col = 2, k_row = 2)
完成修改后的相关性热图:

接下来我们要对颜色进行设置,
在做相关性分析时,可以将颜色设置为预设之外的组合,但这种颜色在选择时需要额外注意,绘制的结果可能对色弱/色盲是不友好的。
载入依赖包RColorBrewer同样的我们使用library()函数进行载入即可,代码如下:

完成导入RColorBrewer包与修改参数代码的相关性热图:

完成颜色设置后我们要对其数据进行标准化处理,假定数据均来自正态分布数据集,则标准化(减去均值后除以标准差),将使这些数值范围限定在相同区间,确保数据并不会由于测量维度差异过大而导致权重偏差、影响结果。此时,这些数值将反映均值到标准差的距离
实现数据预处理标准化,缩放代码如下:


中的scale参数是对行列进行缩放,在其中我们以column进行缩放,完成热图的优化
如果数据集中的维度来自多个观测样本,例如收入、年龄,由于收入范围数值较大,将会产生较大权重,影响最终的结果。使用“标准化”,将数据范围限定在【0,1】
标准化将数据提升到【0,1】范围,这将保留每个数据的原始分布状态,同时将各维度下的数据限定在同样的权重中。
综上我们需要进行数据标准化处理操作,代码如下:

完成标准化数据的可视化热图修改:

其中的normalize参数对应着对数据集进行标准化处理
我们发现热图中还有存在毛躁处,我们开始考虑对缺失值的审查,heatmaply包提供了对缺失值的审查,代码如下:

缺失值审查处理完成灰度叠加:

is.na10()用以对缺失值进行审查,grid_gap表示间隔,其中我们间隔赋值为1即可
以上步骤我们便可以实现用R语言绘制交互式热图
欢迎大家加入人工智能圈参与交流
人工智能学习圈 - 知乎www.zhihu.com