火山图 火山图(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 |
|
来自: 头头了不起 > 《大量RNA测序之差异表达》