rect函数_R函数不会写,"抄"总会吧!

e0f316f13d409dd195d6bfc85ff2de67.png

前面我们简单的介绍了R函数。有些人可能会说,我现在的R水平有限,还不足以写出很高级的函数,该怎么办?俗话说前人栽树后人乘凉,他山之石可以攻玉,鲁迅同志也提出过“拿来”主义。已经有前人,高手写出了很多很实用,很强大的R函数,你直接拿来用就可以了。如果你很好学,也可以把人家的函数源代码拿来学习,其实这也是一种学习R的很好的方法。你如果完全读懂了原作者的函数,你还可以稍作修改用作他用,甚至可以让这个函数功能更加强大。

下面给大家举个具体的例子,火山图大家可能都不陌生,是一种展示差异表达分析结果的常用可视化方式。

在R的GDCRNATools包中就内置了一个专门画火山图的函数,叫做gdcVolcanoPlot。我们有两种方法可以获取这个函数的源代码。

1.通过下面的链接来获取gdcVolcanoPlot的源代码

https://rdrr.io/bioc/GDCRNATools/src/R/gdcDEGVisulization.R

a39434b84e0cd954593c6412f7cbb5eb.png

2.从Bioconductor官网上去下载这个R包的所有源代码,

http://www.bioconductor.org/packages/release/bioc/html/GDCRNATools.html

b68be227dd76f0fd7664260f50577b59.png

注意一定要下载tar.gz格式的文件。.zip格式的文件是windows系统下的R安装包,都是已经编译过的,你是无法看到源代码的。

解压之后你就看到所有函数的源代码

cd1ee75a8d438d432d7bb52e36f3f131.png

我们要找的gdcVolcanoPlot的源代码就在gdcDEGVisulization.R这个文件中。

6dbe2d5c72dca20cba43145bf26ac339.png

我们照""gdcVolcanoPlot这个函数,接下来我们就可以用这个函数来绘制火山图了。

gdcVolcanoPlot<-function (deg.all, fc = 2, pval = 0.01) 
{
  geneList <- deg.all
  geneList$threshold <- c()
  geneList$threshold[geneList$logFC > log(fc, 2) & geneList$FDR < 
                       pval] <- 1
  geneList$threshold[geneList$logFC >= -log(fc, 2) & geneList$logFC <= 
                       log(fc, 2) | geneList$FDR >= pval] <- 2
  geneList$threshold[geneList$logFC < -log(fc, 2) & geneList$FDR < 
                       pval] <- 3
  geneList$threshold <- as.factor(geneList$threshold)
  lim <- max(max(geneList$logFC), abs(min(geneList$logFC))) + 
    0.5
  volcano <- ggplot(data = geneList, aes(x = logFC, 
                                         y = -log10(FDR)))
  volcano + geom_point(aes(color = threshold), alpha = 1, 
                       size = 0.8) + xlab("log2(Fold Change)") + ylab("-log10(FDR)") + 
    scale_colour_manual(values = c("red", "black", "green3")) + xlim(c(-lim, lim)) + 
    geom_vline(xintercept = c(-log(fc, 2), log(fc, 2)), color = "darkgreen", 
               linetype = 3) + geom_hline(yintercept = -log(pval, 
                                                            10), color = "darkgreen", linetype = 3) + theme_bw() + 
    theme(axis.line = element_line(colour = "black"), 
          panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
          panel.border = element_rect(colour = "black"), 
          panel.background = element_blank()) + theme(legend.position = "none") + 
    theme(axis.text = element_text(size = 14), axis.title = element_text(size = 16))
}
​

接下来我们来画火山图,数据是从DEGAll.rda这个文件中来,具体如何生成这个文件和如何使用这个文件可以参考R的save,load函数和 .rda文件。加载之后你就会有DEGall这个变量了,里面存放的是差异表达分析之后的结果。画火山图需要用到logFC,FDR。

3ce46081b24084ddbf8b8b11bf32b08f.png
load("DEGAll.rda")
#这里用到ggplot2这个包来画图
library(ggplot2)
gdcVolcanoPlot(DEGAll)

你就会得到下面这张火山图,是不是很方便,不会写函数一样可以画火山图。

e32639eee5a642486e363639889ff808.png

Reference:

1.R的save,load函数和 .rda文件

2.R函数

DEGAll.rda文件的获取方式请参考下面这篇文章

https://mp.weixin.qq.com/s?__biz=MzI4ODE0NTE3OA==&mid=2649206010&idx=1&sn=976c0bf7081f82527a47f758b7cbf909&chksm=f3d1e68fc4a66f996d87c44551ceafc7d4e5bc19b368499a474dedeb3a471456362b5108d23a&token=1910394879&lang=zh_CN#rd​mp.weixin.qq.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值