r语言绘制精美pcoa图_R语言绘制交互式热图

热图

通过热图可以简单地聚合大量数据,并使用一种渐进的色带来优雅地表现,最终效果一般优于离散点的直接显示,可以很直观地展现空间数据的疏密程度或频率高低。但也由于很直观,热图在数据表现的准确性并不能保证。

原理

生成热图需要四个基本步骤,即

创建缓冲区

填充缓冲区

缓冲区灰度叠加

颜色映射

其中颜色映射根据RGB三通道中的色带中映射后对图像重新着色,实现热力图

交互式热图

交互式热图绘制,分析数据相关性。

heatmap(热图)常用于高维数据的可视化。

数据集中的数据按照矩阵形式,编码为彩色的网格结构。热图常附有树状图。

热图应用领域很多,如基因、相关性、缺失值等。

heatmaply包

heatmaply包能够生成交互式地图,鼠标悬停可查看数值信息、拖动局部可放大查看。

e56821ee76bfc6d785b5318f691ca6df.png

载入相关包:

通过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)

e74be2967e66eaa495cf8bd769fc97d4.png

们的鼠标悬停在矩阵将显示对应的数值,其中的heatmaply( )函数作用是绘制交互热图。使用默认设置、参数

边距调整:

边距调整的函数为margins( ),其功能为对边距进行设置

参数调整代码如下:

36ec57d1a362a192adc93f9e3485b0b5.png

相关性:

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

2275c69d0026a8cfb481033424f95714.png

用颜色限制调用相关性:

e824508ea39daf51fa850cba682b4b32.png

其中我们需要补充一个限制函数limits()

limits( ):限制相关性颜色,相关性的颜色设置,其参数为k_col, k_row颜色通过dendextend::color_branches控制

设置颜色也可以用如下代码进行设置:

> heatmaply_cor(cor(mtcars), margins = c(40, 40), k_col = 2, k_row = 2)

完成修改后的相关性热图:

a4782c381d65a7d0aaa38ff33c2ec727.png

接下来我们要对颜色进行设置,

在做相关性分析时,可以将颜色设置为预设之外的组合,但这种颜色在选择时需要额外注意,绘制的结果可能对色弱/色盲是不友好的。

载入依赖包RColorBrewer同样的我们使用library()函数进行载入即可,代码如下:

416f05f3e66b4d606c3552466cd47b63.png

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

fc0482c51ef5909ed1ae20a3b77bcd49.png

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

实现数据预处理标准化,缩放代码如下:

c579dae6ad2502d14bf6240d91af8ec9.png

aaac84e2e4d3941182080b472e97cd80.png

中的scale参数是对行列进行缩放,在其中我们以column进行缩放,完成热图的优化

如果数据集中的维度来自多个观测样本,例如收入、年龄,由于收入范围数值较大,将会产生较大权重,影响最终的结果。使用“标准化”,将数据范围限定在【0,1】

标准化将数据提升到【0,1】范围,这将保留每个数据的原始分布状态,同时将各维度下的数据限定在同样的权重中。

综上我们需要进行数据标准化处理操作,代码如下:

f6ad4bb3b5162e7ea97e5c4df4ec1e21.png

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

318424d7bd5de3fa8c30cc4ddf1dd6d6.png

其中的normalize参数对应着对数据集进行标准化处理

我们发现热图中还有存在毛躁处,我们开始考虑对缺失值的审查,heatmaply包提供了对缺失值的审查,代码如下:

894b2c5cb15e3113db2150da205b8721.png

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

1625634f5404694b90132fbf6a42791b.png

is.na10()用以对缺失值进行审查,grid_gap表示间隔,其中我们间隔赋值为1即可

以上步骤我们便可以实现用R语言绘制交互式热图

欢迎大家加入人工智能圈参与交流

人工智能学习圈 - 知乎​www.zhihu.com

版权声明:本文为weixin_30371285原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。