科研代码大全|R可视化:ggcor包做复杂相关性热图

科研有捷径,输入代码,一键获取科研成果!就是这么省事,来具体看下有多方便!
搜索http://985.so/a9kb查看全部代码(目前共计50+持续新增中),也可以点击右侧【目录】,可以看到更多有趣的代码~
真香预警:在文中就可以获取代码~
最近在多篇文献中看到下面这种清新脱俗又有丰富信息的复杂相关性图,今天的内容则是尝试复现这类图形,本文中提供了作图过程中用到的数据、完整代码及github中的参考教程,大家也可以跟着进行复现。

01
安装R包
首先分析这个图的组成,这个图是对称的,因此我们只要能画出来一半就可以。然后明确了这个图是用ggcoR包做的,结果在第一步安装ggcoR包时就遇到了困难,在CRAN和bioconducter上均没有找到这个包,在github上找,于是有了下面这样的情况。
先用以下两种方法安装:
devtools::install_github("houyunhuang/ggcor") ⓧ
devtools::install_github("zlabx/ggcor") ⓧ


这两种都失败,可能这种安装方法已经失效,继续在github上查,终于找到一个合适的安装方式,安装成功了:
devtools::install_github("Github-Yilei/ggcor")
02
作图
安装成功后,就开始进行分析,以该包的示例数据为例,即vegan包中的varespec和varechem数据,以下为作图完整代码:
library(ggplot2)
library(ggcor)
library(vegan)
library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.6.2
data("varechem", package = "vegan")
data("varespec", package = "vegan")
###用mantel test计算相关性
mantel <- mantel_test(varespec, varechem,
spec.select = list(Spec01 = 1:7,
Spec02 = 8:18,
Spec03 = 19:37,
Spec04 = 38:44)) %>%
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.value, breaks = c(-Inf, 0.01, 0.05, Inf),
labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))
###画图
quickcor(varechem, type = "upper") +
geom_square() +
anno_link(aes(colour = pd, size = rd), data = mantel) +
scale_size_manual(values = c(0.5, 1, 2)) +
scale_colour_manual(values = c("#D95F02", "#1B9E77", "#A2A2A288")) +
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))

其中anno_link()中还可以有不同的设置来改变图的特征,比如其中的设置label.fontface=2则可以设置物种字体加粗显示。


参考文献及网址:
[1] https://github.com/tanyongjun0815/ggcor