介绍
关于ggvolcano包和ggplot2包绘制火山图,以及加标签、修改配色等。
获得差异基因列表后,用以进行差异基因分析的数据通常包括包括Gene_ID,logFoldChange,P值和P.adj,上调下调信息以及注释信息(Symbol name或Gene name等)。火山图不需要每个样本的表达量,所以这些信息就足够了。
> head(DEG_data)
Gene_ID Gene_name logFC P.Value P.adj regulate
1 LOC117871706 RPS8 -13.09148 1.169818e-11 1.392317e-07 DOWN
2 RPS29 RPS29 12.06191 2.783048e-10 4.575940e-07 UP
3 PDIA2 PDIA2 -10.66046 4.753260e-11 2.015868e-07 DOWN
4 ANXA10 ANXA10 -10.36442 3.167544e-10 4.575940e-07 DOWN
5 PPDPFL PPDPFL -10.27714 7.087988e-09 4.017202e-06 DOWN
6 PFN1 PFN1 -10.20349 5.081167e-11 2.015868e-07 DOWN
ggvolcano
ggvolcano是专门针对火山图开发的包。它的相关参数是直接针对差异基因绘制火山图设计的。
- 安装
install.packages("devtools")
library(devtools)
devtools::install_github("BioSenior/ggvolcano",force = TRUE)
library(ggVolcano)
注意library中的'ggVolcano'的'V'是大写。否则安装成功后,运行时显示找不到包。
- 数据处理
# 读入R包
library(ggVolcano)
library(tidyverse)
library(RColorBrewer)
library(ggsci)
library(patchwork)
# RColorBrewer可以生成渐变色盘,仅作绘图尝试,在火山图中其实并不实用
# patchwork可通过“|”命令合并多个图,快捷方便,但更多时候还是通过cowplot包完成。
data_Female <- read.csv("~/R/LNN/TSE_PS/Limma_DEGs_TSE_vs_PS_Female.csv")%>%
mutate(X = NULL)
data_Female%>%colnames()
DEG_data <- data_Female%>%
mutate(regulate = Direction)%>%
select(Gene_ID,Gene_name,logFC,P.Value,P.adj,regulate)
head(DEG_data)
注意,ggvolcano需要识别regulate这一列,且包含UP、DOWN和NS信息。我的表格中的这一列为"DIrection",在处理中新建立了“regulate”一列并复制了Direction里的信息。如果本身列表中不具备这一列,那么可通过包中自带的功能生成相应的“regulate”列。
DEG_data <- add_regulate(data_Female, log2FC_name = "logFC",
fdr_name = "P.adj",log2FC = 1, fdr = 0.05)
- 火山图绘制
绘图,我们简单绘制一个默认参数下的图,随后尝试调整各种参数
P1 <- ggvolcano(DEG_data,x= "logFC",y ="P.adj",label = "Gene_name")
P1为默认参数下的结果,其中Gene_name为注释信息列,也可以是Gene_ID或自己命名的其它列。默认情况显示10个label,可通过"label_number = "控制显示标签的数目。output = F表示不输出文件,如果output = T,则需要设置 “filename = ”参数。默认情况下,x轴为Log2FC,Y轴为-Log10FDR,图例位置在左上方。接下来我们对图进行部分调整。
#准备目标基因集
list <- DEG_data$Gene_name
label_list <- list[1:50]
#
P2 <- ggvolcano(DEG_data,x= "logFC",y ="P.adj",
label = "Gene_name",output = F,
fills = c("#357EBDFF", "#B8B8B8FF", "#D43F3AFF"),
colors = c("#357EBDFF", "#B8B8B8FF", "#D43F3AFF"),
x_lab = "log2FC",
y_lab = "-Log10P.Value",
custom_label = label_list ,
pointSize = 2,
pointShape = 18,
legend_position = "DR")
#
P1|P2
fills和colors命令设置颜色,x_lab和y_lab设置x、y周名称。custom_label可以设置自己想要显示的标签,以list形式输入,这里我筛选了Gene_name中的前50个名称在list中。pointSize和pointShape设置点的大小和形状。 legend_position 设置图例位置,默认是在左上,即UL,我将其设置在没有遮挡的坐下,即DR。
- 渐变色火山图 gradual_volcano
ggVolcano中有一个独立的函数ggradual_volcano来绘制渐变色火山图。
这里需要注意的是,前面的pointSize, pointShape在这里没法使用,但是可以设置pointSizeRange来控制大小的变化。这里我设置了从大到小以及从小到大,可以看看效果。
# gradual_volcano
P3 <- gradual_volcano(DEG_data,x= "logFC",y ="P.adj",
label = "Gene_name",output = F,
fills = brewer.pal(5, "RdYlBu"),
colors = brewer.pal(10, "RdYlBu"),
x_lab = "log2FC",
y_lab = "-Log10P.Value",
custom_label = label_list ,
legend_position = "DR")
#
mycolors <- hcl.colors(10)
P4 <- gradual_volcano(DEG_data,x= "logFC",y ="P.adj",
label = "Gene_name",output = F,
fills = mycolors,
colors = mycolors,
x_lab = "log2FC",
y_lab = "-Log10P.Value",
custom_label = label_list ,
pointSizeRange = c(1,4),
legend_position = "DR")
#
P5<- gradual_volcano(DEG_data,x= "logFC",y ="P.adj",
label = "Gene_name",output = F,
x_lab = "log2FC",
y_lab = "-Log10P.Value",
custom_label = label_list ,
pointSizeRange = c(4,1),
legend_position = "DR")+
scale_color_gsea()+
scale_fill_gsea()
pdf("gradual_plot.pdf",width = 16, heigh = 6)
P3|P4|P5
dev.off()
P3使用RColorBrewer包进行配色,未设置点的大小
P4使用R中自带的grDevices配色,点从小到大
P5使用ggsci包进行配色,ggsci中可选用渐变色的色盘很少,选择时需要看说明。点改为从大到小
虽然渐变色更炫酷,但是好像不太实用。