R语言绘制优雅的火山图

学术   科学   2023-05-26 18:09   陕西  

「因业务拓展,想组建一个数据分析团队(目前已有RNA-Seq、Chip-Seq、重测序与群体遗传、基因家族、比较基因组、宏基因组、微生物多样性16s/18s/ITS方向专业人员),欢迎有各种数据分析基础的朋友加入我们!——Bioinfor 生信云」

读取deseq2差异分析结果

DE <- read_delim("DE_results", delim = "\t", escape_double = FALSE, trim_ws = TRUE)

数据清洗

library(tidyverse)
de <- mutate(DE,FC = 2 **log2FoldChange) %>%
  mutate(direction = if_else(
    padj > 0.05, 'ns', if_else(
      abs(log2FoldChange) < 1, 'ns', if_else(
        log2FoldChange >= 1, 'up''down')
    )))

绘制火山图

火山图(Volcano Plot)RNA-seq等分析时常用的一种图,它能够清晰地展示显著上调和下调的基因,因作出来的图形如火山喷发,故而得名。

例如图中,X轴一般表示log2的倍数变化,Y轴一般表示-log10(p-value),不同颜色的点表示满足不同条件的基因,红色表示上调基因(P<0.05, Fold change >=2),蓝色表示下调基因,灰色表示不显著的基因(即要么Fold change不满足阈值,要么Pvalue不满足阈值,要么Fold change和Pvalue都不满足阈值),两条垂直虚线表示Fold change(这里默认2倍,即log2(2)=1),一条水平线表示Pvalue阈值(默认0.05)。

library(ggrepel)
my_palette <- c('#4DBBD5FF''#999999','#E64B35FF' )
library(ggplot2)
  ggplot(data = DE, aes(x = log2FoldChange, y = -log10(padj))) + 
  geom_point(aes(color = direction, size = abs(log2FoldChange))) + 
  geom_hline(yintercept = -log10(0.05), linetype = 'dashed', color = 'red') + 
  geom_vline(xintercept = c(-1,1), linetype = 'dashed') +
  #geom_label_repel(data = top_de, aes(label = GID)) + #展示gene id
  scale_color_manual(values = my_palette) + 
  scale_size(range = c(0.1,1.5)) + 
  guides(size = FALSE) +
  labs(x = 'log2 fold change',
       y = '-log10(pvalue)' ,
       title = 'Vocano plot',
       size = 'log2 fold change') +   
  theme_bw() 
    legend.background = element_blank())

分享对应推文到朋友圈保留24h以上即可获取示例数据

有想一起做公众号的朋友欢迎联系我!


END


作者 | 温柔的α

编辑 | 温柔的α

版权所有,转载请注明出处,谢谢合作!


欢迎关注




往期回顾


蛋白质组学和质谱研究的发展史

经典的蛋白质组学实验流程

R语言绘制优雅的seqlogo图


点点“分享”,给我充点儿电吧~

Bioinfor 生信云
分享生信小工具,以及各种测序分析专题,期待有志之士的加入!