几行R语言代码即可绘制火山图?

火山图

火山图(volcano plot)常用于显著差异基因表达的展示,包含显著和差异两个重要信息。显著性指P值小于0.05,差异性常用FoldChange值>=2作为筛选标准。

那么如何看懂一张火山图所包含的信息呢?首先需要知道,火山图的横坐标通常用log2(fold change)表示,差异越大的基因分布在两端,纵坐标用-log10(pvalue)表示,T检验显著性P值的负对数。由于P值越小表示越显著,所以我们进行-log10(P value)转化后,转化值越大表示差异越显著。通常差异倍数越大的基因T检验越显著,所以左上角和右上角的值往往是我们关注的。

求教要怎么画火山图呢?

小锐今天将为大家介绍如何用R语言绘制火山图。

1.加载数据

temp <- read.table("data.txt",header = T,check.names = F,quote="",sep = "t")

head(temp)

> 查看基因表达数据,包含P值和倍数值,因火山图展示需要,将倍数值进行了Log2转化。

2.绘制火山图

2.1初级版火山图

library("ggplot2")

p<-ggplot(temp,aes(x=temp$log_foldchange,y=-log10(temp$p_value)))+xlab("log2 Fold Change")+ylab("-log10P-Value")+

geom_point(size=4,alpha=0.6)

p

2.2进阶版火山图

为方便直观的显示基因表达的上调与下调,我们设置筛选阈值,并依此设置点的颜色。

这里我们设置P<0.05且log(foldchange)>0为上调(“up”),P<0.05且log(foldchange)<0为下调(“down”)。

temp$threshold[temp$p_value < 0.05 & temp$log_foldchange>0 ] = "up"

temp$threshold[temp$p_value < 0.05 & temp$log_foldchange<0 ] = "down"

temp$threshold[temp$p_value > 0.05 & (temp$log_foldchange>=0 | temp$log_foldchange <= 0)] = "non"

p<-ggplot(temp,aes(x=temp$log_foldchange,y=-log10(temp$p_value),colour=threshold))+xlab("log2 Fold Change")+ylab("-log10P-Value")+

geom_point(size=4,alpha=0.6)+

scale_color_manual(values =c("#0072B5","grey","#BC3C28")) #设置点的颜色

p

这样绘制出来的火山图是不是更加直观,更美观了?最后让我们来修饰细节。

2.3终极版火山图

调整图片细节,为火山图去除背景并增加区域线:

library(ggthemes)

p<-ggplot(temp,aes(x=temp$log_foldchange,y=-log10(temp$p_value),colour=threshold))+xlab("log2 Fold Change")+ylab("-log10P-Value")+

geom_point(size=4,alpha=0.6)+

scale_color_manual(values =c("#0072B5","grey","#BC3C28")) +

geom_hline(aes(yintercept=-log10(0.05)),colour="grey",size=1.2 ,linetype=2) + #增加水平间隔线

geom_vline(aes(xintercept=0), colour="grey",size=1.2 ,linetype=2)+ #增加垂直间隔线

theme_few()+theme(legend.title = element_blank()) #去掉网格背景和图注标签

p

供稿:谭迪

编辑:鲁淑妮

(0)

相关推荐

  • ggplot2绘图学习 调整线的类型

    之前我们学习了ggplot绘制单变量,两个连续变量的图形,两个离散型变量.一个离散型变量,一个连续型变量,包括箱图,点图等等.点击专辑查看更多R语言绘图教程. 线条的类型有 基本线条 library( ...

  • R语言动态图可视化:如何、创建具有精美动画的图

    原文链接:http://tecdat.cn/?p=8003 演示数据集 library(gapminder) head(gapminder)## # A tibble: 6 x 6 ## countr ...

  • 画个火山图而已?当然不是。

    写在前面 前两天我推了一个博文<不就画个火山图吗?有那么难吗?>.放出了一个传说中的火山图绘制功能.怎么说呢?难道,所有人都以为我就只是想画个图,交差了事?当然不是!经费是导师的,课题是自 ...

  • TCGA数据分析系列之火山图

    前面我们做了TCGA的差异分析,并且用ggplot2验证了差异分析的准确性,TCGA差异分析及ggplot作图验证,而差异分析后一般会又热图和火山图,热图我们之前也有说过热图系列1,R语言学习系列之& ...

  • 图解|火山图怎么看

    最近小编遇到越来越多咨询怎么看图的问题,索性就起一个"图解"专栏,抓出一些典型的科研图,讲讲这些图该怎么看,能传达什么意义.如果觉得有用,别忘点"在看",让小编 ...

  • R语言 | forestplot包绘制森林图

    天道昭然12020.04.18 18:28:11字数 1,383阅读 16,602原文:R语言 | forestplot包绘制森林图在Meta分析中森林图比较常见,但其实掌握了用R语言中的forest ...

  • 技术贴 | R语言:如何绘制合并气泡图?

    本文由yang根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在组学数据挖掘中在进行差异基因表达分析时,得到显著差异基因后,接下来就需要分析这些基因参与了哪些功能,常见的就是G ...

  • 技术贴 | R语言:pie绘制饼图

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 饼图可以展示整体中各个部分占整体的比例.利用label,col,border可分别调整pie图的标签.饼颜色.边颜色 ...

  • R EnhancedVolcano 绘制火山图

    火山图是用于差异表达分析结果可视化的一种有效方法.今天,我们来介绍一个用于增强火山图绘制的强大 R 包:EnhancedVolcano ,该包拥有强大的绘图功能,用户可以简单的通过设置颜色.形状.大小 ...

  • R语言用igraph绘制网络图可视化

    原文链接:http://tecdat.cn/?p=22886 这篇文章假定你已经知道如何用igraph库建立一个基本的网络图. 基本上,igraph允许将几种类型的输入转化为一个图形对象,可以使用pl ...

  • rpy2库 | 在jupyter中调用R语言代码

    在数据分析中,Python和R各有千秋,虽然Python或R都能在数据分析打通关,从采集.清洗(预处理).分析.可视化,但是在不同的环节,不同的语言易用程度不同.Python胜在干脏活累活,诸如数据采 ...

  • R语言代码相关疑问标准提问

    关于如何提问,如何高效沟通,其实我们讲解了非常多了,比如我一直推崇的邮件交流:如果你希望我回答你的问题 ,然后也会随机抽取粉丝提问进行解答:答读者问第一弹:R里面差异分析的limma包用法细节 .也高 ...

  • 跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...

    简介:R语言统计与绘图公众号目前致力于分享医学统计与R绘图知识,手把手教你使用R语言绘制基线特征表.KM生存曲线.森林图.ROC曲线等.每天一篇精彩R语言推文教程,手把手带你入门R语言绘图. 今天推文 ...

  • 技术贴 | R语言pheatmap聚类分析和热图

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和clus ...