查看原文
其他

R自定义构建函数与批量绘图

欢迎关注R语言数据分析指南

本节来介绍如何使用R语言来自定义构建函数,简化代码并进行批量绘图,在之前展示案例的基础上进行了一些小的改动,下面通过1个案例来进行展示;数据及代码已经上传小编的VIP群,有需要的观众老爷欢迎加入小编的VIP群,目前已经上传「公众号文档数据+代码约170余篇」,扫描文末尾二维码加小编微信「付费99元」后邀请进群,「由于群名额有限人满之后将不在添加新成员」,有需要的请尽早加入,早进早享受

加载R包

library(tidyverse)
library(magrittr)
library(ggstatsplot)

进行单基因相关性分析

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

可以看到以上是与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」基因之间的关系该如何操作,这时自定义构建绘图函数就显得及其重要,下面来具体展示一下

自定义构建函数

make_plot <- function(data,x,y){
  ggscatterstats(data,x={{x}},y={{y}},
                 centrality.para = "mean",
                 margins = "both",                                     
                 xfill = "#CC79A7"
                 yfill = "#009E73"
                 marginal.type = "histogram")
}

上述代码我们将绘图代码打包成了一个函数,通过函数要绘制其它基因之间的关系就大大简化了代码,并可进行重复性操作

make_plot(df2,B2M,SSTR3)

可以看到非常的简洁有了一定的重复性,那么到此还不够试想如果我们要绘制「B2M」与其相关性最高的10个基因之间的关系该如何操作,使用「make_plot」函数10次吗;这样太伤身体当然有更好的办法

循环批量绘图

gene <- df_cor %>% ungroup() %>% select(2) %>% head(10) %>% pull()

相信上面的内容已经能满足大部分观众老爷的需求了,如果对如何进行批量绘图感兴趣的朋友可以在我的VIP群中获取相应的数据及代码,期待您的加入;添加小编微信时请备注来意以便高效处理

小编微信

关注下方公众号下回更新不迷路


往期推荐

ggplot2绘制正负分布条形图

[会员转享] ggplot2跨分面进行显著性标记

跟着nature communications学绘图(9) ggplot2绘制误差线点图

跟着nature communications学绘图(8) ggprism优雅的添加p值

ggplot2优雅的绘制圆点柱状图

ggplot2优雅的给图形添加渐变背景

[会员专享] ggplot2绘制CNS级的柱状图

ggplot2绘制CNS级热图

ggplot2绘制美美的面积图

数百个ggplot2经典绘图案例,带你解决R语言绘图烦恼

使用R优雅的批量计算相关性

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存