问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

跟着Nature文章绘制转录组火山图

创作时间:
作者:
@小白创作中心

跟着Nature文章绘制转录组火山图

引用
1
来源
1.
https://cloud.tencent.com/developer/article/2500675

火山图是一种用于可视化基因表达数据的图形,通常用于比较不同条件下的基因表达差异。它结合了基因的显著性(P值)和表达变化(Fold Change),能够快速识别出显著上调或下调的基因。本文将介绍火山图的原理,并通过复现一篇Nature文章的火山图来展示具体的操作过程。

火山图介绍

简介

火山图是一种用于可视化基因表达数据的图形,通常用于比较不同条件下的基因表达差异。它结合了基因的显著性(P值)和表达变化(Fold Change),能够快速识别出显著上调或下调的基因。

原理

火山图的横轴表示基因表达的对数变化(Log2 Fold Change),而纵轴表示显著性水平的负对数(-log10(P值))。通过这种方式,图中的每个点代表一个基因,点的位置反映了该基因在不同条件下的表达变化和显著性。

功能

  • 识别显著基因:快速识别上调和下调的基因。
  • 可视化数据:将复杂的基因表达数据以直观的方式呈现。
  • 阈值设定:通过设定阈值,筛选出感兴趣的基因。

注意事项

  • 数据预处理:确保数据经过适当的标准化和预处理。
  • 阈值选择:选择合适的阈值以避免假阳性或假阴性。
  • 样本量:样本量不足可能导致结果不可靠。

阈值的选取

  • Fold Change:通常选择2倍变化(Log2 Fold Change ≥ 1或≤ -1)作为上调或下调的阈值。
  • P值:常用的显著性水平为0.05(-log10(P值) ≥ 1.3),但根据具体研究可调整。

实战演练

接下来就让我们通过复现一篇Nature文章的火山图,文献为:

数据可以从文章中下载,数据格式为:

library(readxl)
library(tidyverse)
library(ggthemes)
library(ggsci)

reshighctrl <- read_excel("./41586_2023_6990_MOESM7_ESM.xlsx", sheet = "Extended Data Figure 2", na = "NA")

lfc <- 1
pval <- 0.1

source("theme_bipin.r") 

reshighctrl %>%
  mutate(color = case_when(
    abs(log2FoldChange) > lfc & padj > pval ~ "grey",
    abs(log2FoldChange) < lfc & padj < pval ~ "grey",
    abs(log2FoldChange) > lfc & padj < pval ~ "#ED8172",
    abs(log2FoldChange) < lfc & padj > pval ~ "grey"
  ),
  plot_label = case_when(
    abs(log2FoldChange) > lfc & padj < pval ~ symbol
  ),
  plot_label = gsub("\\.", NA, plot_label)
) %>%
  ggplot(aes(log2FoldChange, -log10(padj), fill = color, label = plot_label)) + 
  geom_point(alpha = 1, size = 4, pch = 21) + 
  ggrepel::geom_label_repel(alpha = 1, family = "sans", color = "black", fill = "white", face = "italicize") +
  labs(x = expression(Log[2]~fold~change), y = expression(-~Log[10]~padj~value)) +
  geom_vline(xintercept = c(-lfc, lfc), linetype = 2) + 
  geom_hline(yintercept = -log10(pval), linetype = 5) +
  xlim(-3, 3) +
  theme_bipin() +
  theme(axis.title = element_text(size = 16),
        text = element_text(family = "sans"))

ggsave("./Fig/volcano.pdf", width = 6, height = 6)

theme_bipin <- function(base_size = 14, base_family = "arial") {
  library(grid)
  library(ggthemes)
  library(ggsci)
  (theme_foundation(base_size = base_size, base_family = base_family)
    + theme(plot.title = element_text(face = "bold",
                                      size = rel(1.2), hjust = 0.5),
            text = element_text(),
            panel.background = element_rect(colour = NA),
            plot.background = element_rect(colour = NA),
            panel.border = element_rect(colour = NA),
            axis.title.y = element_text(angle = 90, vjust = 2),
            axis.title.x = element_text(vjust = -0.2))
}

复现结果图:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号