R语言linkET包绘制相关性组合网络热图

热图就是使用颜色来表示数据相关性的图。能绘制热图的R包很多,既往我们已经介绍了《R语言pheatmap包绘制热图》,今天咱们来介绍一下R语言linkET包绘制相关性组合网络热图。相关性热图的意思热图和其他数据的关联性,比较的是多数据间的内在关系。
在这里插入图片描述
linkET包是我们的一个国人写的,目前需要使用devtools::install_github下载,作者对包的描述是万物皆可互联,还挺有意思的。我们先下载包下来,
devtools::install_github(“Hy4m/linkET”, force = TRUE)
有时候Rstudio会提示你要更新其他的包吗?这里选3,不更新就可以了
下载好包后我们把包和数据导入,因为是相关性热图,所以需要导入两个数据

library(linkET)
library(ggplot2)
library(dplyr)
varespec<-read.csv("E:/r/test/varespec.csv",sep=',',header=TRUE)
varechem<-read.csv("E:/r/test/varechem.csv",sep=',',header=TRUE)

在这里插入图片描述
在这里插入图片描述
这两个数据来自文献Väre, H., Ohtonen, R. and Oksanen, J. (1995) Effects of reindeer grazing on understorey vegetation in dry Pinus sylvestris forests. Journal of Vegetation Science 6, 523–530
varespec 数据框有 24 行 44 列,列是 44 个物种的估计覆盖值。变量名由学名组成,数据介绍说熟悉植被类型的人一看便知,我是不知道是什么植物,反正就是植物名字。varechem 数据框有 24 行 14 列,给出了与 varespec 数据框中相同地点的土壤特性。化学测量值有明显的名称,就是一些金属元素的特征。Baresoil 表示裸土的估计覆盖率,Humdepth 表示腐殖质层的厚度。
linkET包即可绘制单独的热图,也可以绘制相关性的热图,下面咱们一一展示。
它有几个特殊的函数要先介绍一下,correlate函数可以计算数据的相关性

correlate(varechem)

在这里插入图片描述
也可以计算不同数据的相关性系数

correlate(varespec[1:30], varechem)

在这里插入图片描述
算出了相关性就能生成图形了,先来单个数据的

correlate(varechem) %>% 
  as_md_tbl() %>% 
  qcorrplot() +
  geom_square()

在这里插入图片描述
再来个双数据的

correlate(varespec[1:30], varechem) %>% 
  qcorrplot() +
  geom_square()

在这里插入图片描述
进行个性配色修改

correlate(varespec[1:30], varechem) %>% 
  qcorrplot() +
  geom_square() +
  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu"))

在这里插入图片描述
Qcorrplot函数能把系数化的矩阵图示化

qcorrplot(correlate(varechem)) +
  geom_square() +
  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu"))

在这里插入图片描述
Type系数可以控制我们取局部图形,比如我只想取下半截

qcorrplot(correlate(varechem), type = "lower") +
  geom_square() +
  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu"))

在这里插入图片描述
使用set_corrplot_style()函数和geom_square()函数还可以定制自己的风格,比如我想改方框为圆形,定义颜色为红色、蓝色和白色

set_corrplot_style(colours = c("red", "white", "blue"))
qcorrplot(correlate(varechem), type = "lower") +
  geom_shaping(marker = "circle")

在这里插入图片描述
想要从新回复成系统自定义颜色可以使用

set_default_style()

下面咱们来进行相关性的网络热图绘制,绘制前要进行一个曼特尔试验,R包作者是这样说的,相异矩阵的Mantel和偏Mantel检验。,这里注意一下spec_select选择分类的是列的引索值,varespec数据刚好44列

扫描二维码关注公众号,回复: 16225399 查看本文章
mantel <- mantel_test(varespec, varechem,
                      spec_select = list(Spec01 = 1:7,
                                         Spec02 = 8:18,
                                         Spec03 = 19:37,
                                         Spec04 = 38:44))

在这里插入图片描述
得出每个类别的R值和P值后我们对他们进行分段表示

mantel<-mantel %>% 
  mutate(rd = cut(r, breaks = c(-Inf, 0.2, 0.4, Inf),
                  labels = c("< 0.2", "0.2 - 0.4", ">= 0.4")),
         pd = cut(p, breaks = c(-Inf, 0.01, 0.05, Inf),
                  labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))

在这里插入图片描述
计算好后就可以进一步绘图了

qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
  geom_square() +
  geom_couple(aes(colour = pd, size = rd), 
              data = mantel, 
              curvature = nice_curvature())

在这里插入图片描述
还可以进一步修饰,这个连接线条太粗了,不怎么美观,咱们调整一下

qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
  geom_square() +
  geom_couple(aes(colour = pd, size = rd), 
              data = mantel, 
              curvature = nice_curvature()) +
  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu")) +
  scale_size_manual(values = c(0.5, 1, 2))

在这里插入图片描述
自定义线条颜色

qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
  geom_square() +
  geom_couple(aes(colour = pd, size = rd), 
              data = mantel, 
              curvature = nice_curvature()) +
  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu")) +
  scale_size_manual(values = c(0.5, 1, 2)) +
  scale_colour_manual(values = color_pal(3))

在这里插入图片描述
给图例更改名字

qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
  geom_square() +
  geom_couple(aes(colour = pd, size = rd), 
              data = mantel, 
              curvature = nice_curvature()) +
  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu")) +
  scale_size_manual(values = c(0.5, 1, 2)) +
  scale_colour_manual(values = color_pal(3)) +
  guides(size = guide_legend(title = "Mantel's r",
                             override.aes = list(colour = "grey35"), 
                             order = 2),
         colour = guide_legend(title = "Mantel's p", 
                               override.aes = list(size = 3), 
                               order = 1),
         fill = guide_colorbar(title = "Pearson's r", order = 3))

在这里插入图片描述
还有很多细节可以修改,我就不一一介绍了,公众号回复:网络热图数据,可以获得数据。

猜你喜欢

转载自blog.csdn.net/dege857/article/details/132097240