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

热图就是使用颜色来表示数据相关性的图。能绘制热图的R包很多,既往我们已经介绍了《R语言pheatmap包绘制热图》,今天咱们来介绍一下R语言linkET包绘制相关性组合网络热图。相关性热图的意思热图和其他数据的关联性,比较的是多数据间的内在关系。
R语言linkET包绘制相关性组合网络热图_第1张图片
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)

R语言linkET包绘制相关性组合网络热图_第2张图片
R语言linkET包绘制相关性组合网络热图_第3张图片
这两个数据来自文献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)

R语言linkET包绘制相关性组合网络热图_第4张图片
也可以计算不同数据的相关性系数

correlate(varespec[1:30], varechem)

R语言linkET包绘制相关性组合网络热图_第5张图片
算出了相关性就能生成图形了,先来单个数据的

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

R语言linkET包绘制相关性组合网络热图_第6张图片
再来个双数据的

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

R语言linkET包绘制相关性组合网络热图_第7张图片
进行个性配色修改

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

R语言linkET包绘制相关性组合网络热图_第8张图片
Qcorrplot函数能把系数化的矩阵图示化

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

R语言linkET包绘制相关性组合网络热图_第9张图片
Type系数可以控制我们取局部图形,比如我只想取下半截

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

R语言linkET包绘制相关性组合网络热图_第10张图片
使用set_corrplot_style()函数和geom_square()函数还可以定制自己的风格,比如我想改方框为圆形,定义颜色为红色、蓝色和白色

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

R语言linkET包绘制相关性组合网络热图_第11张图片
想要从新回复成系统自定义颜色可以使用

set_default_style()

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

mantel <- mantel_test(varespec, varechem,
                      spec_select = list(Spec01 = 1:7,
                                         Spec02 = 8:18,
                                         Spec03 = 19:37,
                                         Spec04 = 38:44))

R语言linkET包绘制相关性组合网络热图_第12张图片
得出每个类别的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")))

R语言linkET包绘制相关性组合网络热图_第13张图片
计算好后就可以进一步绘图了

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

R语言linkET包绘制相关性组合网络热图_第14张图片
还可以进一步修饰,这个连接线条太粗了,不怎么美观,咱们调整一下

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

R语言linkET包绘制相关性组合网络热图_第15张图片
自定义线条颜色

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

R语言linkET包绘制相关性组合网络热图_第16张图片
给图例更改名字

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

R语言linkET包绘制相关性组合网络热图_第17张图片
还有很多细节可以修改,我就不一一介绍了,公众号回复:网络热图数据,可以获得数据。

你可能感兴趣的:(R语言,科研绘图,r语言,开发语言)