TCGA数据分析系列之火山图

前面我们做了TCGA的差异分析,并且用ggplot2验证了差异分析的准确性,TCGA差异分析及ggplot作图验证,而差异分析后一般会又热图和火山图,热图我们之前也有说过热图系列1R语言学习系列之“多变的热图”,今天我们来了解一下火山图的画法

加载数据

加载差异分析的结果

rm(list = ls())load(file='limma差异分析结果.Rda')library(ggplot2)class(DEG_limma_voom)volcano<-DEG_limma_voom

数据处理

我们先把差异分析结果增加一列,以区分上调下调和无差异的基因。我们以adj.P.Val < 0.05,logFC>2或者logFC<-2作为有明显差异的基因

volcano$type[(volcano$adj.P.Val > 0.05|volcano$adj.P.Val=="NA")|(volcano$logFC < 2)& volcano$logFC > -2] <- "none significant"volcano$type[volcano$adj.P.Val <= 0.05 & volcano$logFC >= 2] <- "up-regulated"volcano$type[volcano$adj.P.Val <= 0.05 & volcano$logFC <= -2] <- "down-regulated"

纵坐标一般取-log10,绘图看一下

p = ggplot(volcano,aes(logFC,-1*log10(adj.P.Val),color=type))       p + geom_point()

给横坐标设定界限,自定义颜色,加上临界值的虚线

x_lim <- max(volcano$logFC,-volcano$logFC) gg=p + geom_point( size=1) + xlim(-x_lim,x_lim) +labs(x="log2(FC)",y="-log10(adjP)")+ scale_color_manual(values =c("#A52A2A","grey","#f8766d"))+ geom_hline(aes(yintercept=-1*log10(0.05)),colour="black", linetype="dashed") + geom_vline(xintercept=c(-2,2),colour="black", linetype="dashed")print(gg)

看起来还不错

加上基因名

如何把差异最明显的基因名标在火山图上呢?这里提供了几种方法可供选择

方法一

volcano1<-volcanovolcano1$gene_name<-row.names(volcano1)
library(dplyr)top <- volcano1 %>% group_by(type) %>% top_n(n = 10, wt = -1*log10(adj.P.Val)) %>% filter(type !='none significant') # 取上下调中显著差异表达基因前10个
gg + geom_text(data=top,aes(x=logFC, y=-1*log10(adj.P.Val),label=as.character(gene_name)),size=3)

基因名重叠的可以下载PFD格式,在AI里面修改

如果想把背景的灰色去掉们也有办法

library(ggthemes)gg + geom_text(data=top,aes(x=logFC, y=-1*log10(adj.P.Val),label=as.character(gene_name)),size=3)+theme_few()

方法二

library(ggrepel)up <- subset(volcano1, type == 'up-regulated')up <- up[order(up$adj.P.Val), ][1:10, ]down <- subset(volcano1, type == 'down-regulated')down <- down[order(down$adj.P.Val), ][1:10, ]p1 <- gg + theme(legend.position = 'right') +
  geom_text_repel(data = rbind(up, down), aes(x = logFC, y = -log10(adj.P.Val), label = gene_name),
                  size = 3,box.padding = unit(0.5, 'lines'), segment.color = 'black', show.legend = FALSE)
print(p1)

这样基因名就不会重叠在一起,还有箭头指示

方法三

library(ggrepel)up <- subset(volcano1, type == 'up-regulated')up <- up[order(up$adj.P.Val), ][1:10, ]down <- subset(volcano1, type == 'down-regulated')down <- down[order(down$adj.P.Val), ][1:10, ]p2 <- gg + theme(legend.position = 'right') + geom_label_repel(data = rbind(up, down), aes(label = gene_name), show.legend = FALSE)print(p1)

比方法二多了基因的框,看起来也不错。

最后再介绍一个画热图的在线网站:http://www.ehbio.com/ImageGP/index.php/Home/Index/Volcanoplot.html,只要准备好数据输入进去就行了,不过要注意,数据的行名和列名有要求,不能包含特殊字符,比如空格,逗号等,最好就只用字母表示就行。比如我们把数据整理成下面格式

粘贴到网站中,出图

参数可以调节,图片可以下载。

好了,今天的分享就到这了。

另外,最近收集了一些很好的资源,想分享给大家,顺便能涨一些粉,主要有

1. 19年中标的各门类国自然题目汇总,以及17年的国自然汇总,部分含摘要!

2. R语言学习书籍

R语言实战(中文完整版)

R数据科学(中文完整版)

ggplot2:数据分析与图形艺术

30分钟学会ggplot2

3. TCGA数据整理

前期从https://xenabrowser.net/datapages/ (UCSC Xena)数据库下载的TCGA数据,传到了百度云上备份。

感兴趣的话,转发朋友圈或者100人以上的微信群,截图发到公众号,即可获取全部资源的百度云链接,链接7天有效,希望大家赶紧下载。你们的支持是我前进的动力,感谢。

(0)

相关推荐

  • gg.gap:ggplot阶截断坐标轴的优秀完美解决方案

    写在前面 ggplot的截断坐标轴一直以来做的不是很好,plot可以有一些比较复杂应用的函数可以解决截断坐标轴问题,但是ggplot出的大部分图表似乎无能为力.这里为大家介绍gg.gap包,用于ggp ...

  • gggibbous包:让ggplot点变成月有阴晴圆缺,更有诗情画意

    写在前面 虽然微生信生物写过许多的东西,但是确实做好很细心,很认真,并且考虑到大家的运行环境的教程并不多,随着我的成长,这些方面的东西,也慢慢在大家的反馈中得到了注意,并逐渐提高.比如今天这篇:有的话 ...

  • ggplot2实现分半小提琴图绘制基因表达谱和免疫得分

    最近看到很多人问下面这个图怎么绘制,看着确实不错.于是我查了一些资料,这个图叫split violin或者half violin,本质上是一种小提琴图.参考代码在https://gist.github ...

  • 火山图|给你geneList,帮我标到火山图上

    火山图(Volcano Plot)常用于展示基因表达差异的分布,横坐标常为Fold change(倍数),越偏离中心差异倍数越大:纵坐标为P value(P值),值越大差异越显著.得名原因也许是因为结 ...

  • 16s分析之不同分类水平差异分析及气泡图绘制

    对otu的差异分析并不是我们唯一的选择,差异往大的做,可以往往门,纲,目,科做. 今天要做一张长的图,我们可以和别的图一起配合使用会好? 比如这篇文章,还是挺好看的: 下面是一份完整的代码,我仅仅只做 ...

  • TCGA数据分析系列(一)

    肿瘤基因组图谱(TCGA)计划是由美国National Cancer Institute(NCI)和National Human Genome Research Institute(NHGRI)于20 ...

  • TCGA数据分析系列(二):数据库之GEPIA2

    所谓工欲善其事,必先利其器,从今天开始,我们来介绍TCGA数据库的使用.今天我们来介绍一款非常容易上手的数库:GEPIA2:http://gepia2.cancer-pku.cn/#index 话不多 ...

  • TCGA数据分析系列(二):UALCAN数据库

    UALCAN:(http://ualcan.path.uab.edu/index.html)是一个综合的.用户友好的.交互式的web资源,用于分析癌症组学数据.UALCAN的设计目的是: 提供对公开的 ...

  • TCGA数据分析系列(二):LinkedOmics

    今天继续我们TCGA在线数据库系列.今天介绍的数据库是LinkedOmic,http://www.linkedomics.org/login.php可谓是航母级数据库,没有做不到的,只有想不到的.话不 ...

  • TCGA数据分析系列 蛋白相互作用网络

    我们的TCGA数据分析系列已经出过几期 TCGA数据分析系列(一) TCGA数据分析系列(二):数据库之GEPIA2 TCGA数据分析系列(二):UALCAN数据库 TCGA数据分析系列(二):Lin ...

  • TCGA数据分析系列 零代码富集分析:ClueGO+CluePedia(1)

    前面我们出了一系列的TCGA数据分析教程 TCGA数据分析系列(一) TCGA数据分析系列(二):数据库之GEPIA2 TCGA数据分析系列(二):UALCAN数据库 TCGA数据分析系列(二):Li ...

  • TCGA数据分析系列:GEPIA2数据库

    所谓工欲善其事,必先利其器,从今天开始,我们来介绍TCGA数据库的使用.今天我们来介绍一款非常容易上手的数库:GEPIA2:http://gepia2.cancer-pku.cn/#index 话不多 ...

  • TCGA数据分析系列:LinkedOmics数据库

    今天继续我们TCGA在线数据库系列.今天介绍的数据库是LinkedOmic,http://www.linkedomics.org/login.php可谓是航母级数据库,没有做不到的,只有想不到的.话不 ...

  • 中国十大名画系列 五牛图 步辇图

    九天阊阖开宫殿,万国衣冠拜冕旒. 在强大的物质文明之上,唐朝有着非常丰富的精神文明大餐. 耕地面积达到八百五十万顷.天宝八年,官仓存粮达九千六百万石.因此耕牛在农业生产中的重要性,耕稼之本衣食之源,农 ...