❝本节来介绍如何使用R语言来自定义构建函数,简化代码并进行批量绘图,在之前展示案例的基础上进行了一些小的改动,下面通过1个案例来进行展示;
加载R包
代码语言:javascript复制library(tidyverse)
library(magrittr)
library(ggstatsplot)
进行单基因相关性分析
代码语言:javascript复制df_cor <- read_tsv("data.xls") %>% column_to_rownames(var="TCGA_id") %>%
pivot_longer(-B2M) %>%
pivot_longer(names_to = "name_2", values_to = "value_2",B2M) %>%
group_by(name_2,name) %>%
summarise(cor= cor.test(value_2,value,method="spearman")$estimate,
p.value = cor.test(value_2,value,method="spearman")$p.value) %>%
set_colnames(c("gene_1","gene_2","cor","pvalue")) %>%
filter(pvalue < 0.05) %>%
arrange(desc(abs(cor)))%>%
dplyr::slice(1:500)
代码语言:javascript复制# A tibble: 500 x 4
# Groups: gene_1 [1]
gene_1 gene_2 cor pvalue
<chr> <chr> <dbl> <dbl>
1 B2M APOBEC3H 0.577 1.48e-25
2 B2M XCL2 0.577 1.51e-25
3 B2M KIR2DL4 0.565 2.31e-24
4 B2M TIFAB 0.565 2.63e-24
5 B2M XCL1 0.561 5.92e-24
6 B2M FUT7 0.558 1.21e-23
7 B2M ZBED2 0.557 1.57e-23
8 B2M IFNG 0.526 8.71e-21
9 B2M NCR3 0.524 1.39e-20
10 B2M SSTR3 0.506 4.22e-19
代码语言:javascript复制❝可以看到以上是与B2M基因相关性最高的前10个基因,那么下面让我们通过「ggstatsplot」来进行数据统计分析及可视化 ❞
df2 <- read_tsv("data.xls")
ggscatterstats(data = df2,y = B2M,x=APOBEC3H,
centrality.para = "mean",
margins = "both",
xfill = "#CC79A7",
yfill = "#009E73",
marginal.type = "histogram")
❝可以看到过程及其的简单,那么如果我们还需要绘制其它基因与「B2M」基因之间的关系该如何操作,这时自定义构建绘图函数就显得及其重要,下面来具体展示一下 ❞
自定义构建函数
代码语言:javascript复制make_plot <- function(data,x,y){
ggscatterstats(data,x={{x}},y={{y}},
centrality.para = "mean",
margins = "both",
xfill = "#CC79A7",
yfill = "#009E73",
marginal.type = "histogram")
}
上述代码我们将绘图代码打包成了一个函数,通过函数要绘制其它基因之间的关系就大大简化了代码,并可进行重复性操作
代码语言:javascript复制make_plot(df2,B2M,SSTR3)
❝可以看到非常的简洁有了一定的重复性,那么到此还不够试想如果我们要绘制「B2M」与其相关性最高的10个基因之间的关系该如何操作,使用「make_plot」函数10次吗;这样太伤身体当然有更好的办法 ❞
循环批量绘图
代码语言:javascript复制gene <- df_cor %>% ungroup() %>% select(2) %>% head(10) %>% pull()