分享

手把手教你R语言绘制“火山图”

 生物_医药_科研 2019-06-21

什么是火山图

火山图(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语言绘图技能的提高,帮你轻松做美图更好发文章!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约