科研代碼大全|R可視化:ggcor包做復雜相關性熱圖

科研有捷徑,輸入代碼,一鍵獲取科研成果!就是這么省事,來具體看下有多方便!
搜索http://985.so/a9kb查看全部代碼(目前共計50+持續(xù)新增中),也可以點擊右側【目錄】,可以看到更多有趣的代碼~
真香預警:在文中就可以獲取代碼~?
最近在多篇文獻中看到下面這種清新脫俗又有豐富信息的復雜相關性圖,今天的內容則是嘗試復現(xiàn)這類圖形,本文中提供了作圖過程中用到的數(shù)據(jù)、完整代碼及github中的參考教程,大家也可以跟著進行復現(xiàn)。

01
安裝R包
首先分析這個圖的組成,這個圖是對稱的,因此我們只要能畫出來一半就可以。然后明確了這個圖是用ggcoR包做的,結果在第一步安裝ggcoR包時就遇到了困難,在CRAN和bioconducter上均沒有找到這個包,在github上找,于是有了下面這樣的情況。
先用以下兩種方法安裝:
devtools::install_github("houyunhuang/ggcor")???
devtools::install_github("zlabx/ggcor") ???


這兩種都失敗,可能這種安裝方法已經(jīng)失效,繼續(xù)在github上查,終于找到一個合適的安裝方式,安裝成功了:
devtools::install_github("Github-Yilei/ggcor")
02
作圖
安裝成功后,就開始進行分析,以該包的示例數(shù)據(jù)為例,即vegan包中的varespec和varechem數(shù)據(jù),以下為作圖完整代碼:
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則可以設置物種字體加粗顯示。


參考文獻及網(wǎng)址:
[1] https://github.com/tanyongjun0815/ggcor