专栏名称: 基迪奥生物
广州基迪奥生物官方公众平台,小圆每天分享各种生信软件使用技巧, 搜罗好玩的科研生活,定期还有掉节操的生物界八卦分享,让科研变得有意思咯~
目录
相关文章推荐
威海交通  ·  数码产品国补“满月” 超2671万名消费者参与 ·  10 小时前  
爱否科技  ·  OPPO Find X8 Ultra ... ·  昨天  
新闻广角  ·  金价,涨了! ·  3 天前  
51好读  ›  专栏  ›  基迪奥生物

2021年被引用600+次的高颜值火山图绘制方法来了!

基迪奥生物  · 公众号  ·  · 2021-12-20 18:05

正文

点击蓝字 关注我们


上次给大家分享了ggplot2绘制好看火山图教程,详情可见推文: 如何绘制新颖好看的火山图?

今天再给大家安利一个专业绘制火山图的高颜值R包: EnhancedVolcano ,非常快捷即可获得超高颜值火山图!

我们先看一张说明文档中的示例美图:


一整个狠狠爱住了!且这个包仅在今年(2021)年就被引用了 632次 !使用人数像是坐火箭般的蹭蹭上涨~


废话不多说,下面就用起来!

# 利用BioManager安装EnhancedVolcano包并载入
if(!requireNamespace("BiocManager",quietly=TRUE))
install.packages("BiocManager")
BiocManager::install("EnhancedVolcano")
library(EnhancedVolcano)

#设置工作目录并载入本地数据:
setwd("C:/Users /Desktop/ EnhancedVolcano")
data<-read.table("volcano.xls",header=T)


使用的数据data如下,我们绘图仅需要id、log 2 FC、Pvalue(或FDR)这三列数据即可。


#默认原始参数绘制基本火山图:
EnhancedVolcano(data,
x="log2FC",
y ="Pvalue",
lab=data$id)



EnhancedVolcano包可以 自动为选定的差异显著性检验P值或FDR值取对数,即计算-log 10 (p)/- log 10 (FDR)作为纵坐标 ,这让我们能够少敲几行代码,还是非常不错滴!

从下文就正式开始各项参数的配置啦,整个绘图过程只用到EnhancedVolcano()一个函数,我们根据需求在函数内添加各类参数(每段新添加的会放在最后)即可实现不同的效果。

#首先按需求设定x和y轴的阈值线:
EnhancedVolcano(data,
x="log2FC",
y="Pvalue",
lab=data$id,
pCutoff =10e-1/20,#y轴阈值线(水平,0.05)
FCcutoff=1.5,#x轴阈值线(垂直,-1.5~1.5)
pointSize=3,#散点大小
labSize=5,#标签大小
xlim=c(-6, 6),#限制X轴范围
ylim=c(0,100)) #限制Y轴范围



#调整散点的颜色和透明度:
EnhancedVolcano(data,
x="log2FC",
y="Pvalue",
lab=data$id,
pCutoff=10e-1/20,#y轴阈值线(水平)
FCcutoff=1.5,#x轴阈值线(垂直)
pointSize=3,#散点大小
labSize=5,#标签大小
xlim=c(-6, 6),#限制X轴范围
ylim=c(0,100),#限制Y轴范围
####↓新加入↓####
col=c('#b5b5b5','#b5b5b5','#4D4398','#F18D00'),#调整颜色
colAlpha=0.6)#调整透明度



现在只能按照NS/ log 2 FC/p-value/p-value and log 2 FC的顺序指定颜色,如何自定义我们在后文会提到。

#只显示所关注变量(基因名)的标签:
EnhancedVolcano(data,
x="log2FC",
y="Pvalue",
lab=data$id,
pCutoff=10e-1/20,#y轴阈值线(水平)
FCcutoff=1.5,#x轴阈值线(垂直)
pointSize=3,#散点大小
labSize=5,#标签大小
xlim=c(-6, 6),#限制X轴范围
ylim=c(0,100),#限制Y轴范围
col=c('#b5b5b5','#b5b5b5','#4D4398','#F18D00'),#调整颜色
colAlpha=0.6,#调整透明度
####↓新加入↓####
selectLab=c('novel_circ_022837','novel_circ_016586','novel_circ_024554','novel_circ_019332','novel_circ_008986'),#使用selectLab参数选定所关注标签
xlab=bquote(~Log[2]~'fold change'))#将内容传递给xlab



除了只显示关注基因,当然也可以按需自行设定显著上/下调Top5/10的基因等等。

#标签美化:
downvals<-c('novel_circ_022837','novel_circ_016586','novel_circ_024554')
upvals<-c('novel_circ_019332','novel_circ_008986')
EnhancedVolcano(data,
x="log2FC",
y="Pvalue",
lab=data$id,
pCutoff=10e-1/20,#y轴阈值线(水平)
FCcutoff=1.5,#x轴阈值线(垂直)
pointSize=3,#散点大小
labSize=4,#标签大小
xlim=c(-6, 6),#限制X轴范围
ylim=c(0,100),#限制Y轴范围
col=c('#b5b5b5','#b5b5b5','#4D4398','#F18D00'),#调整颜色
colAlpha=0.6,#调整透明度
selectLab=c(downvals,upvals),#使用selectLab参数选定所关注的标签
xlab=bquote(~Log[2]~'fold change'),#将内容传递给xlab
####↓新加入↓####
labCol='black',#标签颜色
labFace='bold',#标签字体
boxedLabels=TRUE,#是否在框中绘制标签
drawConnectors=TRUE,#是否通过连线将标签连接到对应的点上
widthConnectors=0.8,#连线的宽度
endsConnectors="last",#连线绘制箭头的方向,可选first、both、last
colConnectors='black')#连线的颜色



# EnhancedVolcano()+coord_flip()可翻转坐标轴:


即我们在上一段的代码后直接+coord_flip()可实现炫酷的翻转~


#自定义颜色,现在将log2FC>1.5(up)指定为橙色,将log2FC<-1.5(down)指定为蓝色,其余(nodiff)为灰色:
#指定标签向量group,通过ifelse条件判断函数指定标签和对应颜色
group<-ifelse(
data$log2FC<(-1.5)&data$Pvalue<0.05,'#4D4398',
ifelse(data$log2FC>(1.5)&data$Pvalue<0.05,'#F18D00',
'#b5b5b5'))
group[is.na(group)]<-'#b5b5b5'
names(group)[group=='#F18D00']<-'Up'
names(group)[group=='#b5b5b5']<-'Nodiff'
names(group)[group=='#4D4398']<-'Down'

downvals<-c('novel_circ_022837','novel_circ_016586','novel_circ_024554')
upvals<-c('novel_circ_019332','novel_circ_008986')

EnhancedVolcano(data,
x="log2FC",
y="Pvalue",
lab=data$id,
pCutoff=10e-1/20,#y轴阈值线(水平)
FCcutoff=1.5,#x轴阈值线(垂直)
pointSize=3,#散点大小
labSize=4,#标签大小
xlim=c(-6, 6),#限制X轴范围
ylim=c(0,100),#限制Y轴范围
selectLab=c(downvals,upvals),#使用selectLab参数选定所关注的标签
xlab=bquote(~Log[2]~'fold change'),#将内容传递给xlab
labCol='black',#标签颜色
labFace='bold',#标签字体
boxedLabels=TRUE,#是否在框中绘制标签
drawConnectors=TRUE,#是否通过连线将标签连接到对应的点上
widthConnectors=0.8,#连线的宽度
endsConnectors="last",#连线绘制箭头的方向,可选first、both、last
colConnectors='black',#连线的颜色
####↓新加入↓####
colCustom=group,#用group覆盖默认配色方案
colAlpha=0.6)#调整透明度


##标题、副标题、图例、阈值线等的美化:
EnhancedVolcano(data,
x="log2FC",
y="Pvalue",
lab=data$id,
pCutoff=10e-1/20,#y轴阈值线(水平)
FCcutoff=1.5,#x轴阈值线(垂直)
pointSize=3,#散点大小
labSize=3.5,#标签大小
xlim=c(-6, 6),#限制X轴范围
ylim=c(0,100),#限制Y轴范围
selectLab=c(downvals,upvals),#使用selectLab参数选定所关注的标签
xlab=bquote(~Log[2]~'fold change'),#将内容传递给xlab
labCol='black',#标签颜色
labFace='bold',#标签字体
boxedLabels=TRUE,#是否在框中绘制标签
drawConnectors=TRUE,#是否通过连线将标签连接到对应的点上
widthConnectors=0.8,#连线的宽度
endsConnectors="last",#连线绘制箭头的方向,可选first、both、last
colConnectors='black',#连线的颜色
colCustom=group,#用group覆盖默认配色方案
colAlpha=0.6,#调整透明度
####↓新加入↓####
cutoffLineType='longdash',#阈值线类型,可选“blank”、“solid”、“dashed”、“dotted”、“dotdash”、“longdash”和“twodash”
cutoffLineCol='pink',#阈值线颜色
cutoffLineWidth=0.88,#阈值线粗细
title="Volcano Plot Exp",#主标题
subtitle="Differential expression",#副标题
caption=bquote(~Log[2]~"fold change cutoff,1;p-value cutoff,0.05"),#注释说明
legendPosition='right',#图例位置
legendLabSize=12,#图例文字大小
legendIconSize=6)#图例符号大小



#突出所关注标签变量:
vals






请到「今天看啥」查看全文