专栏首页生信补给站火山图|给你geneList,帮我标到火山图上

火山图|给你geneList,帮我标到火山图上

火山图(Volcano Plot)常用于展示基因表达差异的分布,横坐标常为Fold change(倍数),越偏离中心差异倍数越大;纵坐标为P value(P值),值越大差异越显著。得名原因也许是因为结果图像火山吧!

ggplot2-plotly|让你的火山图“活”过来

火山图只标示指定基因?这需求都遇到过吧。

一 载入R包,数据

library(ggplot2)
library(openxlsx)
library(dplyr)

#绘制火山图数据
data <- read.xlsx("火山图.xlsx", sheet = 1)
head(data) #查看数据,主要有P值,Fold change和基因ID即可。

二 绘制火山图(标示最显著的基因)

2.1 先根据阈值分出上调和下调基因;

data$change <- as.factor(ifelse(data$adj.P.Val < 0.01 & abs(data$logFC) > 1,
                                ifelse(data$logFC > 1,'UP','DOWN'),'NOT'))

2.2 标示差异显著的基因

data$sign <- ifelse(data$adj.P.Val < 0.001 & abs(data$logFC) > 2.5,data$GENE_SYMBOL,NA)
head(data)

2.3 绘制火山图

ggplot(data = data, aes(x = logFC, y = -log10(adj.P.Val), color = change)) +
  geom_point(alpha=0.8, size = 1) +
  theme_bw(base_size = 15) +
  theme(panel.grid.minor = element_blank(),panel.grid.major = element_blank()) +
  geom_hline(yintercept=2 ,linetype=4) +
  geom_vline(xintercept=c(-1,1) ,linetype=4 ) +
  scale_color_manual(name = "", values = c("red", "green", "black"), limits = c("UP", "DOWN", "NOT")) +
  geom_text(aes(label = sign), size = 3)

了解一下ggplot2绘图的方式,标示的基因就是各个基因的text,然后想办法将其赋予到一个 aes 中即可。

三 标示指定基因

和上面类似,将指定基因添加到绘制数据中即可。

3.1 读入含有geneList的文件
gene <- read.xlsx("火山图.xlsx", sheet = 2)
gene$geneList <- gene$gene

额外生成一列相同列是为了后面合并后还有一列存在,这一列用于标示基因。(方法有点笨)

3.2 合并火山图数据
data2 <- data %>% 
  left_join(gene,by = c("GENE_SYMBOL" = "gene"))head(data2)
增加了geneList列,为了后面使用text的方式添加上基因。
3.3 标示文件中的指定基因
ggplot(data = data2, aes(x = logFC, y = -log10(adj.P.Val), color = change)) +
  geom_point(alpha=0.8, size = 1) +
  theme_bw(base_size = 15) +
  theme(panel.grid.minor = element_blank(),panel.grid.major = element_blank()) +
  geom_hline(yintercept=2 ,linetype=4) +
  geom_vline(xintercept=c(-1,1) ,linetype=4 ) +
  scale_color_manual(name = "", values = c("red", "green", "black"), limits = c("UP", "DOWN", "NOT")) +
  geom_text(aes(label = geneList), size = 5,color = "blue")
3.4 ggrepel 解决重叠问题

如果目标标示基因太多会导致重叠,可使用ggrepal函数

library(ggrepel)ggplot(data = data2, aes(x = logFC, y = -log10(adj.P.Val), color = change)) +
  geom_point(alpha=0.8, size = 1) +
  theme_bw(base_size = 15) +
  theme(panel.grid.minor = element_blank(),panel.grid.major = element_blank()) +
  geom_hline(yintercept=2 ,linetype=4) +
  geom_vline(xintercept=c(-1,1) ,linetype=4 ) +
  scale_color_manual(name = "", values = c("red", "green", "black"), limits = c("UP", "DOWN", "NOT")) +
  geom_label_repel(aes(label=geneList), fontface="bold", color="grey50", box.padding=unit(0.35, "lines"), point.padding=unit(0.5, "lines"), segment.colour = "grey50")

呐,可以随意标示感兴趣的基因了。

本文分享自微信公众号 - 生信补给站(Bioinfo_R_Python),作者:生信补给站

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「R」数据可视化1: 火山图

    在生物领域我们常常使用R语言对数据可视化。在对数据可视化的时候,我们需要明确想要展示的信息,从而选择最为合适的图突出该信息。本系列文章将介绍多种基于不同R包的作...

    王诗翔呀
  • 惊!画出来的火山图居然缺半边?

    这篇文章的测序数据是公布的:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE137300 表达矩阵及...

    生信技能树
  • R语言学习 - 火山图

    火山图 火山图用于展示基因表达差异的分布,横轴为Log2 Fold Change,越偏离中心差异倍数越大;纵轴为(-1)*Log10 P_adjust,值越大差...

    生信宝典
  • 【科研猫·绘图】朋友圈最火热的“火山图”(带R代码分享)

    暑假到了,在这个火热的夏日,还有比一张美丽的文章主图更能让我们充满激情和力量吗?在这组学撑起生物信息学半边天的时代,火山图,在转录组、蛋白组、代谢组等多种组学数...

    用户6317549
  • 多种方法在火山图上标记感兴趣基因(差异基因,或者通路)

    全国巡讲课程结束后的一个月持续答疑环节,被问的最多的问题居然是如何在差异分析后的火山图上面标记出来感兴趣的基因,这里有必要派我们杰出能干的小洁老师出马!

    生信技能树
  • R语言之基因表达可视化实现

    基因表达的差异性分析是生物信息学中的必经之路。那么,基因表达差异的可视化展示也就具有了很重要的地位。首先我们介绍下目前在基因表达差异性可视化中的集中展示形式:

    一粒沙
  • 自然语言理解 – NLU | NLI

    自然语言理解就是希望机器像人一样,具备正常人的语言理解能力,由于自然语言在理解上有很多难点(下面详细说明),所以 NLU 是至今还远不如人类的表现。

    easyAI
  • Glimma 交互式可视化RNA-seq数据

    转录组的标准分析,比较容易复现,基本上看我六年前的表达芯片的公共数据库挖掘系列推文即可;

    生信技能树
  • Volcano plot | 别再问我这为什么是火山图

    火山图是散点图的一种,它将统计测试中的统计显著性量度(如p value)和变化幅度相结合,从而能够帮助快速直观地识别那些变化幅度较大且具有统计学意义的数据点(基...

    生信宝典
  • AI算法帮助预测火山爆发,为开发全球火山预警系统提供可能

    黄石火山观测台的科学家Michael Poland表示,如果没有这些工具,地球科学家就无法跟上卫星传回的信息,因为数据量异常之大。

    AiTechYun
  • 你真的不了解这个星球(涨姿势的大数据)

    ? 1. 首先来看看地球,看起来不错哟,地球~ ? 2. 图中圈圈里头的人口,比其他地区的所有总和都还要多。 ? 3. 以整个地球史来看,曾活过的人类高达11...

    小莹莹
  • 对于森林大火的肆虐,AI 能做些什么?

    场景介绍:对于无法消除的森林火灾问题,AI 技术结合卫星图像,能够在救灾过程过程中作出及时合理的见解,帮助人们将损失降到最低。

    HyperAI超神经
  • 文末送书 | 火神山3天秒建5G基站的背后

    今年我们都经历了一个很特殊的春节。这次疫情也给我们的工作和生活带来了很大改变,全国超过2亿人都体验了线上办公,高度发达的通信网络也给我们带来了很大便利。

    用户1737318
  • BIC无代码绘制差异基因火山图

    Volcano plot | 别再问我这为什么是火山图 一文解释了火山图如何解读。不太难看懂,而一旦看懂了,图也就知道怎么绘制了。

    生信宝典
  • R函数不会写,"抄"总会吧!

    前面我们简单的介绍了R函数。有些人可能会说,我现在的R水平有限,还不足以写出很高级的函数,该怎么办?俗话说前人栽树后人乘凉,他山之石可以攻玉,鲁迅同志也...

    生信交流平台
  • 跟着CELL学作图|1.火山图

    这篇2020年发表在cell上关于新冠的组学文章里面有大量的生信内容。今天带大家复现其中的一个Supplemental Figure:火山图。

    用户7010445
  • R 数据可视化 02 | 火山图

    链接:https://pan.baidu.com/s/1niWjcaJOuimO4NQHzHmvIA 提取码:q6am

    白墨石
  • 澳洲山火虚假信息复盘:击溃人心一时易,核查辟谣路漫漫

    自去年9月以来,澳大利亚新南威尔士州和维多利亚州的森林大火已造成27人丧生,大量动植物死亡,超2000处房屋毁于一旦,无数人流离失所,这场肆虐了5个多月的大火...

    腾讯大讲堂
  • 蛋白质组学第8期 文章复现之数据处理

    引用自(https://blog.csdn.net/Orange_Spotty_Cat/article/details/80312154)

    生信技能树

扫码关注云+社区

领取腾讯云代金券