火山图是用于差异表达分析结果可视化的一种有效方法。今天,我们来介绍一个用于增强火山图绘制的强大 R 包:EnhancedVolcano ,该包拥有强大的绘图功能,用户可以简单的通过设置颜色、形状、大小和阴影等参数定义不同的绘图属性,此外通过可以通过添加连线的方式有效避免数据点之间的重叠现象。使用 EnhancedVocalno 包绘制的火山图基本可以直接用于文献发表,可以说非常简单又实用的一款神器了。

1. 下载与安装

R 版本:3.6.1。从 Bioconductor 中下载包:

if (!requireNamespace('BiocManager', quietly = TRUE))    install.packages('BiocManager')    BiocManager::install('EnhancedVolcano')

2. 简单使用

2.1 输入数据格式

首先,我们先来介绍一下 EnhancedVolcan o 输入数据格式。EnhancedVolcano 包可以使用多种差异算法(例如 DESeq2 等)的结果作为输入,数据中需包含 log2FCPvalue  或(和) qvalue 结果,示例数据如下:


2.2 基础绘图

library(EnhancedVolcano)res <- read.table(diffexpress,                  sep="\t",                  head=T,                  row.names=1,                  check.names=F,                  quote="")  EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4))

3、进阶功能

3.1 调整阈值,设置点及标签大小

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    transcriptPointSize = 3.0,    transcriptLabSize = 3.0)


3.2 调整颜色及点透明度

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    col = c('black', 'black', 'black', 'red3'),    colAlpha = 1)


3.3 调整绘图点形状

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    #shape = 8,   #点形状    shape = c(1, 4, 23, 25), #形状列表    colAlpha = 1)



3.4 改变截止线及添加阈值线

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    colAlpha = 1,    cutoffLineType = 'blank',    cutoffLineCol = 'black',    cutoffLineWidth = 0.8,    hline = c(10e-4, 10e-8, 10e-12, 10e-15),    hlineCol = c('grey0', 'grey25','grey50','grey75'),    hlineType = 'longdash',    hlineWidth = 0.8,    gridlines.major = FALSE,    gridlines.minor = FALSE)

3.5 调整标注位置、大小及文字

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    colAlpha = 1,    cutoffLineType = 'twodash',    cutoffLineWidth = 0.8,    legend=c('NS','Log (base 2) fold-change','P value',      'P value & Log (base 2) fold-change'),    legendPosition = 'right',    legendLabSize = 16,    legendIconSize = 5.0)

legendVisible = FALSE 可以不展示图注

3.6 校正后的 p 值作图

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,     xlab = bquote(~Log[2]~ 'fold change'),    ylab = bquote(~-Log[10]~adjusted~italic(P)),    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    colAlpha = 1,    cutoffLineType = 'twodash',    cutoffLineWidth = 0.8,    legend=c('NS','Log (base 2) fold-change','P value',      'P value & Log (base 2) fold-change'),    legendPosition = 'right',    legendLabSize = 16,    legendIconSize = 5.0)


3.7 添加连线用于展示更多标注

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    xlab = bquote(~Log[2]~ 'fold change'),    ylab = bquote(~-Log[10]~adjusted~italic(P)),    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    colAlpha = 1,    cutoffLineType = 'twodash',    cutoffLineWidth = 0.8,    legend=c('NS','Log (base 2) fold-change','P value',      'P value & Log (base 2) fold-change'),    legendPosition = 'right',    drawConnectors = TRUE,    legendLabSize = 16,    legendIconSize = 5.0)


3.8 只标注重要变量

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    xlab = bquote(~Log[2]~ 'fold change'),    ylab = bquote(~-Log[10]~adjusted~italic(P)),    selectLab = c('Spp1','S100a11','Mgp','LOC498555','Sh3bgrl',                  'Ring1','Apoe','Tcn2','Ager','Mc1r'),    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    colAlpha = 1,    cutoffLineType = 'twodash',    cutoffLineWidth = 0.8,    legend=c('NS','Log (base 2) fold-change','P value',      'P value & Log (base 2) fold-change'),    legendPosition = 'right',    drawConnectors = TRUE,    legendLabSize = 16,    legendIconSize = 5.0)


3.9 加框展示变量

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    xlab = bquote(~Log[2]~ 'fold change'),    ylab = bquote(~-Log[10]~adjusted~italic(P)),    selectLab = c('Spp1','S100a11','Mgp','LOC498555','Sh3bgrl',                  'Ring1','Apoe','Tcn2','Ager','Mc1r'),    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    colAlpha = 1,    cutoffLineType = 'twodash',    cutoffLineWidth = 0.8,    legend=c('NS','Log (base 2) fold-change','P value',      'P value & Log (base 2) fold-change'),    legendPosition = 'right',    drawConnectors = TRUE,    boxedlabels = TRUE,    legendLabSize = 16,    legendIconSize = 5.0)

3.10 针对特殊点设置颜色

colCustom 功能可针对特定位点设置颜色,例如上下调基因设置不同颜色,参考代码如下:

keyvals <- rep('black', nrow(res))

 # set the base name/label as 'Mid' names(keyvals) <- rep('Mid', nrow(res))

 # fold change > 1.5 & p-value < 0.0001 为高表达 keyvals[which(res$"log2(Fold_change)" > 1.5 & res$"p-value"<0.0001)] <- 'gold' names(keyvals)[which(res$"log2(Fold_change)" > 1.5 & res$"p-value"<0.0001)] <- 'high'

 # fold change < -1.5 & p-value < 0.0001为低表达 keyvals[which(res$"log2(Fold_change)" < -1.5 & res$"p-value"<0.0001)] <- 'royalblue' names(keyvals)[which(res$"log2(Fold_change)" < -1.5 & res$"p-value"<0.0001)] <- 'low'

EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = 'A versus B',    pCutoff = 10e-3,    FCcutoff = 1.5,    xlab = bquote(~Log[2]~ 'fold change'),    ylab = bquote(~-Log[10]~adjusted~italic(P)),    selectLab = rownames(res)[which(names(keyvals) %in% c('high', 'low'))],    transcriptPointSize = 3.0,    transcriptLabSize = 3.0,    colAlpha = 1,    cutoffLineType = 'twodash',    cutoffLineWidth = 0.8,    colCustom = keyvals,    border = 'full',    legend=c('NS','Log (base 2) fold-change','P value',      'P value & Log (base 2) fold-change'),    legendPosition = 'right',    drawConnectors = FALSE,    boxedlabels = FALSE,    legendLabSize = 16,    legendIconSize = 5.0)


3.11 设置特定点的大小

p <- EnhancedVolcano(res,    lab = rownames(res),    x = 'log2(Fold_change)',    y = 'p-value',    xlim = c(-4, 4),    ylim = c(0,15),    title = '',    subtitle = '',    pCutoff = 10e-3,    FCcutoff = 1.5,    xlab = bquote(~Log[2]~ 'fold change'),    ylab = bquote(~-Log[10]~adjusted~italic(P)),    selectLab = rownames(res)[which(names(keyvals) %in% c('high', 'low'))],    transcriptLabSize = 3.0,    transcriptPointSize = c(ifelse((res$"log2(Fold_change)">2 |res$"log2(Fold_change)"< -2) & res$"p-value"<0.0001 , 3, 1)),    colAlpha = 1,    cutoffLineType = 'twodash',    cutoffLineWidth = 0.8,    colCustom = keyvals,    border = 'full',    legend=c('NS','Log (base 2) fold-change','P value',      'P value & Log (base 2) fold-change'),    legendPosition = 'right',    drawConnectors = FALSE,    boxedlabels = FALSE,    legendLabSize = 16,    legendIconSize = 5.0,    caption = "")p

3.12 自定义刻度

p +    ggplot2::coord_cartesian(xlim=c(-6, 6)) +    ggplot2::scale_x_continuous(      breaks=seq(-6,6, 1))


EnhancedVolcano 包绘制火山图就先介绍到这里,如果对你有所帮助,请点个赞吧。

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

R EnhancedVolcano 绘制火山图相关推荐

  1. R语言绘制火山图(volcano plot)实战:为差异表达基因(DEGs)添加颜色、基于显著性阈值进行点的颜色美化、为选定基因添加标签

    R语言绘制火山图(volcano plot)实战:为差异表达基因(DEGs)添加颜色.基于显著性阈值进行点的颜色美化.为选定基因添加标签 目录 R语言绘制火山图(volcano plot)实战 #导入 ...

  2. 【R语言】——火山图绘制

    本期介绍利用R语言筛选差异表达基因及绘制火山图. 一.什么是火山图? 火山图(volcano plot)是散点图的一种,它将统计测试中的统计显著性量度(如p-value.FDR)和变化幅度相结合,从而 ...

  3. sangerbox平台使用(三)绘制火山图

    目前绘制火山图有很多工具,我们最常用的就是R语言,本次想向大家介绍的是一个在线工具直接绘制火山图-sangerbox 官方链接为:http://sangerbox.com/AllTools?tool_ ...

  4. R数据可视化 火山图

    一. 示例数据准备 下载:链接:https://pan.baidu.com/s/1tKR943efKOn7-TW_892KLg 提取码:wbk6 文件说明 示例数据,其中数据均为虚拟数据,与实际生物学 ...

  5. R语言绘制线图(line)实战

    R语言绘制线图(line)实战 目录 R语言绘制线图(line)实战 #仿真数据 #基础线图

  6. R语言绘制空白图实战

    R语言绘制空白图实战 目录 R语言绘制空白图实战 #绘制空白图1 #绘制空白图2 #绘制空白图3

  7. R可视化绘制卡方分布图(Chi-Square Distribution)

    R可视化绘制卡方分布图(Chi-Square Distribution) 目录 R可视化绘制卡方分布图(Chi-Square Distribution) 卡方分布图(Chi-Square Distri ...

  8. 运用R语言绘制小提琴图

    运用R语言绘制小提琴图 一.概念 小提琴图是一种绘制连续型数据的方法,可以认为是箱形图与核密度图的结合体,与此同时,还可使用核密度图展示数据分布的'轮廓'效果,'轮廓'越大,即意味着数据越集中于该处, ...

  9. R语言绘制棒棒糖图(火柴杆图)

    本博客介绍几种利用R语言绘制棒棒糖图(火柴杆图)的方法. 2. 使用原生ggplot方法 最容易也是最简单想到的方法是直接使用ggplot2包进行更新,这里需要使用ggplot本身的特性,通过图层叠加 ...

最新文章

  1. 干货丨零基础学习大数据,搭建Hadoop处理环境
  2. Hadoop详解(九):Hadoop Streaming和Pipes原理和实现
  3. js base_64 解密
  4. 【~~~】POJ-1006
  5. mysql mode_MYSQL中的sql_mode模式
  6. 08-Oracle基本概念
  7. A Software Developer’s Reading Plan
  8. Java 异常的捕获与处理详解 (一)
  9. RabbitMQ消息可靠性传输示例
  10. gradle 配置及设置本地仓库
  11. excel中提取中文拼音
  12. android packagemanager源码,Android源码个个击破之PackageManager
  13. VMware 虚拟磁盘文件备份与恢复
  14. 使用Tensorflow训练LSTM+Attention中文标题党分类
  15. TFTLCD 16位并口屏幕驱动
  16. BeanDefinition使用方式
  17. 学微积,用手机;勇于创新,敢于实践
  18. 用c 语言中 矩阵乘法,C中实现矩阵乘法的一种高效的方法
  19. ChatGPT是否会取代程序员:一场关于职业未来的讨论
  20. dos2unix命令将dos文件转换为unix格式

热门文章

  1. 由浅入深C A S,小白也能与BAT面试官对线
  2. 快手上市,蚂蚁酸了!不含主管人均收益1500万,蚂蚁不能比
  3. 阿里飞猪搜索技术的应用与创新
  4. 一文带你了解 MySQL 中的各种锁机制!
  5. 团队实践,我们是怎么用敏捷开发工具Leangoo的
  6. OKR的火爆,正是基于这些价值
  7. 计算机网络谢希仁第七版课后答案完整版第四章 网络层
  8. Keras快速上手:基于Python的深度学习
  9. 计算机书籍-Exploring Cloud Computing免费电子书
  10. Yolov5总结文档(理论、代码、实验结果)