火山图(Volcano Plot)是一类用来展示组间差异数据的图像,因为在生物体发生变化时从全局角度而言大部分的基因表达没有或着发生了很小程度的变化,只有少部分基因的表达发生了显著的变化。故而,火山图常见于RNA表达谱和芯片的数据分析中,最常用于分析基因的差异表达,近年来也陆续有其他组学的应用,此处不做详述。
火山图的本质是一个Plus版的散点图,其中包含两个重要的概念:
1)显著性,也就是p-value,差异性检验两组样本的p值,以负对数-log10(P-value)转换做为纵坐标;
2)以log2(Fold Change)为横坐标,即可得火山图,利用一定的筛选条件(如Fold Change大于2倍,显著性P值小于0.05),即可筛选出显著差异表达的基因,进行后续研究。
如果大家用的是DEseq2分析RNA表达谱的数据,分析结果应该如下,其中log2FoldChange是表达量的log2(Fold Change)值,padj列示矫正后的pvalue,这两列也就是我们画火山图需要的两列。
首先,我们把DEseq的输出格式转换成dataframe格式,用函数as.data.frame(),并用head查看其前6行,如下:
df <->
接下来按照P<0.05, log2foldchange=""> 2 或者log2FoldChange <>下调和上调表达的颜色设置:
设定分组并赋值给变量color,我们把P<0.05, log2foldchange=""> 2定义为上调,颜色设置为红色,把P<0.05, log2foldchange=""><>
df$color <- ifelse(df$padj=""><>0.05 & abs(df$log2FoldChange) >= 2,ifelse(df$log2FoldChange > 2 ,'red','blue'),'gray')
设定好分组,还需要给分组指定颜色:
r color<- c(red="">'red', gray = 'gray', blue ='blue')
绘图的完整代码在这里:
p <- ggplot(df,="" aes(log2foldchange,="" -log10(padj),="" col="color))" +="" ="" geom_point()="" +="" ="" theme_bw()="" +="" ="" scale_color_manual(values="color)" +="" ="" labs(x="">'log2 (fold change)',y='-log10 (q-value)') + geom_hline(yintercept = -log10(0.05), lty=4,col='grey',lwd=0.6) + geom_vline(xintercept = c(-2, 2), lty=4,col='grey',lwd=0.6) + theme(legend.position = 'none', panel.grid=element_blank(), axis.title = element_text(size = 16), axis.text = element_text(size = 14))p
联系客服