什么是火山图火山图(Volcano Plot)在一张图中显示了两个重要的指标(Fold change/pvalue),可以非常直观且合理地筛选出在两样本间发生差异表达的基因。检验分析出两样本间显著差异表达的基因后,以log2(fold change)为横坐标,以T检验显著性检验P值的负对数-log10(pvalue)为纵坐标,即可得火山图(Volcano Plot)。 这里有两个重要概念需要了解: FDR:在差异表达分析过程中,采用Benjamini-Hochberg方法对原有假设检验得到的显著性p值(p-value)进行校正,并最终采用校正后的p值,即FDR(False Discovery Rate)。 FC(Fold Change):两样品(组)间表达量的比值。
绘制火山图我们使用R语言中的ggplot2包来绘制火山图。首先加载R包及示例数据。 library('ggplot2') head(temp1,10) -log10FDR logFC Regulate 64170 1.971938 -2.2884388 Down 6674 1.864104 -1.2460804 Down 7401 1.864104 1.2950939 Up 57217 1.864104 -1.2676311 Down 50613 1.801074 1.6640064 Up 3433 1.801074 4.2696415 Up 54830 1.801074 -1.9012811 Down 54886 1.801074 -1.5446208 Down 6355 1.801074 1.4273926 Up 338324 1.801074 0.9592775 Normal
其中行名为GeneID,第一列为-log10FDR,第二列为log2FC,第三列为上下调信息。 将第三列设置为有序因子,方便后续图片颜色设置。 temp1$Regulate=factor(temp1$Regulate, levels=c('Up','Down','Normal'), order=T)
绘制成点图: P_volcano=ggplot(temp1,aes(x=temp1$logFC,y=temp1[,'-log10FDR']))+ geom_point(aes(color=temp1$Regulate))+
#设置点的颜色
scale_color_manual(values =c('Up' = 'red', 'Down' = 'blue', 'Normal' = 'grey'))+ labs(x='log2FC',y='-log10FDR')+
#增加阈值线:分别对应FDR=0.05,|log2FC|=1
geom_hline(yintercept=-log10(0.05),linetype=4)+ geom_vline(xintercept=c(-1,1),linetype=4)+
xlim(-5,5)+ theme(plot.title = element_text(size = 25,face = 'bold', vjust = 0.5, hjust = 0.5), legend.title = element_blank(), legend.text = element_text(size = 18, face = 'bold'), legend.position = 'right', legend.key.size=unit(0.8,'cm'), axis.ticks.x=element_blank(), axis.text.x=element_text(size = 15,face = 'bold', vjust = 0.5, hjust = 0.5), axis.text.y=element_text(size = 15,face = 'bold', vjust = 0.5, hjust = 0.5), axis.title.x = element_text(size = 20,face = 'bold', vjust = 0.5, hjust = 0.5), axis.title.y = element_text(size = 20,face = 'bold', vjust = 0.5, hjust = 0.5), panel.background = element_rect(fill = 'transparent',colour = 'black'), panel.grid.minor = element_blank(), panel.grid.major = element_blank(), plot.background = element_rect(fill = 'transparent',colour = 'black')) P_volcano
结果图如下: 会生信,画图很简单!想学的可以参考我们的作图课程《R语言绘图基础(ggplot2)》,该课程直接从生物数据案例入手,手把手教你掌握ggplot2绘图基础,从简单的柱状图开始,一步一步深入,实现R语言绘图技能的提高,帮你轻松做美图更好发文章!
|