差异基因|火山图

介绍

关于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。

P1, P2
  • 渐变色火山图 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中可选用渐变色的色盘很少,选择时需要看说明。点改为从大到小


P3,P4,P5

虽然渐变色更炫酷,但是好像不太实用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容