前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >跟着Nature文章绘制转录组火山图

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

作者头像
简说基因
发布2025-02-27 21:18:31
发布2025-02-27 21:18:31
18300
代码可运行
举报
文章被收录于专栏:简说基因简说基因
运行总次数:0
代码可运行

我们总能在文献中看到的火山图是怎么绘制的,本期就介绍火山图原理并且一起进行R代码实操训练,绘制自己的火山图。

导语: 火山图原理介绍; 阈值介绍; R代码实操;

火山图介绍

简介

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

原理

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

功能

识别显著基因:快速识别上调和下调的基因。

可视化数据:将复杂的基因表达数据以直观的方式呈现。

阈值设定:通过设定阈值,筛选出感兴趣的基因。

注意事项

数据预处理:确保数据经过适当的标准化和预处理。

阈值选择:选择合适的阈值以避免假阳性或假阴性。

样本量:样本量不足可能导致结果不可靠。

阈值的选取

Fold Change:通常选择2倍变化(Log2 Fold Change ≥ 1或≤ -1)作为上调或下调的阈值。

P值:常用的显著性水平为0.05(-log10(P值) ≥ 1.3),但根据具体研究可调整。

实战演练

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

文章原图:

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

复现代码:

代码语言:javascript
代码运行次数:0
复制
## volcano_plot

library(readxl)
library(tidyverse)# 读取Excel文件中的特定工作表
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 ~ pal_nejm("default", alpha = 0.4)(8)[1],
  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) + 
  #geom_text(hjust=-0.3, vjust=0) +
  scale_fill_identity() +
  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) +
  ggrepel::geom_label_repel(alpha=1,family="sans",color="black",fill="white",face="italicize") +
  #scale_y_log10() +
  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 = element_text(face = "bold",size = rel(2)),
            axis.title.y = element_text(angle=90,vjust =2),
            axis.title.x = element_text(vjust = -0.2),

复现结果图:

本期分享到这里就结束啦,如有疑问或建议,欢迎大家到评论区留言!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说基因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 火山图介绍
    • 简介
    • 原理
    • 功能
    • 注意事项
    • 阈值的选取
  • 实战演练
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档