富集分析不光有条带图和点图,还有...

参考资料

南方医科大学网红博导Y叔的一本神奇的书
https://yulab-smu.github.io/clusterProfiler-book/chapter12.html#bar-plot

好像一直在更新,没怎么宣传过,不管了,拿来学习。

1.安装和加载包

if(!require(clusterProfiler)) BiocManager::install("clusterProfiler")
if(!require(dplyr)) install.packages("dplyr")
#> Loading required package: dplyr
#> 
#> Attaching package: 'dplyr'
#> The following object is masked from 'package:AnnotationDbi':
#> 
#>     select
#> The following objects are masked from 'package:IRanges':
#> 
#>     collapse, desc, intersect, setdiff, slice, union
#> The following objects are masked from 'package:S4Vectors':
#> 
#>     first, intersect, rename, setdiff, setequal, union
#> The following object is masked from 'package:Biobase':
#> 
#>     combine
#> The following objects are masked from 'package:BiocGenerics':
#> 
#>     combine, intersect, setdiff, union
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
if(!require(ggplot2)) install.packages("ggplot2")
library(clusterProfiler)
library(dplyr)
library(ggplot2)
library(enrichplot)
library(cowplot)

2.示例数据

使用limma差异分析的结果,在生信星球公众号回复“富集输入”即可获得

load("step4output.Rdata")
geneList=deg$logFC
names(geneList)=deg$ENTREZID
geneList=sort(geneList,decreasing = T)
geneList2 = geneList[abs(geneList) > 1.5]
gene <- names(geneList)[abs(geneList) > 1.5]

3.GO富集分析

(1)富集分析

ego <- enrichGO(gene          = gene,
                universe      = names(geneList),
                OrgDb         = "org.Hs.eg.db",
                ont           = "CC",
                pAdjustMethod = "BH",
                pvalueCutoff  = 0.01,
                qvalueCutoff  = 0.05,
                readable      = TRUE)
head(ego)
#>                    ID                    Description GeneRatio   BgRatio
#> GO:0042555 GO:0042555                    MCM complex     8/330  11/16112
#> GO:0044454 GO:0044454        nuclear chromosome part    34/330 436/16112
#> GO:0000228 GO:0000228             nuclear chromosome    35/330 472/16112
#> GO:0098687 GO:0098687             chromosomal region    28/330 320/16112
#> GO:0000785 GO:0000785                      chromatin    33/330 468/16112
#> GO:0000775 GO:0000775 chromosome, centromeric region    16/330 177/16112
#>                  pvalue     p.adjust       qvalue
#> GO:0042555 4.453098e-12 1.705536e-09 1.528116e-09
#> GO:0044454 2.276461e-11 4.359423e-09 3.905928e-09
#> GO:0000228 4.620969e-11 5.899437e-09 5.285740e-09
#> GO:0098687 1.037845e-10 9.937367e-09 8.903619e-09
#> GO:0000785 6.295599e-10 4.822429e-08 4.320769e-08
#> GO:0000775 7.480238e-07 4.774885e-05 4.278171e-05
#>                                                                                                                                                                                                                                           geneID
#> GO:0042555                                                                                                                                                                                             MCM3/MCM8/MCM2/MCM7/MCM5/MCM4/MCM6/MMS22L
#> GO:0044454                SNAI2/JUN/PPARGC1A/SATB1/ZEB2/MUC1/MCM3/CHAF1A/TIPIN/E2F1/MCM2/MCM7/HIST1H3A/HIST1H3J/SGO1/MCM5/MCM4/CDK1/MCM6/ASF1B/HIST1H3G/MMS22L/HIST1H1A/BRCA2/ORC1/RAD51AP1/HIST1H2BB/UHRF1/CDCA5/HIST1H1B/POLE2/ESCO2/BLM/RAD51
#> GO:0000228          SNAI2/JUN/PPARGC1A/SATB1/ZEB2/MUC1/MCM3/CHAF1A/TIPIN/HMGA2/E2F1/MCM2/MCM7/HIST1H3A/HIST1H3J/SGO1/MCM5/MCM4/CDK1/MCM6/ASF1B/HIST1H3G/MMS22L/HIST1H1A/BRCA2/ORC1/RAD51AP1/HIST1H2BB/UHRF1/CDCA5/HIST1H1B/POLE2/ESCO2/BLM/RAD51
#> GO:0098687                                                                         KAT2B/MCM3/ZWINT/TTK/NUF2/SKA3/MCM2/MCM7/CENPK/SGO1/DSCC1/MCM5/MAD2L1/MCM4/CDK1/MCM6/HELLS/SPC25/HJURP/SKA1/BRCA2/ORC1/HIST1H2BB/ERCC6L/CDCA5/ESCO2/BLM/RAD51
#> GO:0000785 SNAI2/JUN/PPARGC1A/MAF/SATB1/ZEB2/MUC1/CHAF1A/TIPIN/HMGA2/PHC2/E2F1/MCM2/MCM7/HIST1H3A/HIST1H3J/DSCC1/HIST1H2AB/HIST1H2AI/ASF1B/HELLS/HIST1H2BM/HIST1H3G/HIST1H2AK/WDR76/HIST1H1A/RAD51AP1/HIST1H2BB/UHRF1/CDCA5/HIST1H1B/ESCO2/RAD51
#> GO:0000775                                                                                                                                           KAT2B/ZWINT/TTK/NUF2/SKA3/CENPK/SGO1/DSCC1/MAD2L1/HELLS/SPC25/HJURP/SKA1/ERCC6L/CDCA5/ESCO2
#>            Count
#> GO:0042555     8
#> GO:0044454    34
#> GO:0000228    35
#> GO:0098687    28
#> GO:0000785    33
#> GO:0000775    16

(2)富集分析可视化

噼里啪啦8张图来了,为了省点地方可以做成拼图

#(1)条带图
p1=barplot(ego,showCategory=20)
#(2)点图
p2=dotplot(ego)
#> wrong orderBy parameter; set to default `orderBy = "x"`
#(3)展示top5通路的共同基因
#Gene-Concept Network
p3=cnetplot(ego, categorySize="pvalue", foldChange=geneList,colorEdge = TRUE)
p4=cnetplot(ego, foldChange=geneList, circular = TRUE, colorEdge = TRUE)
gg <- ggdraw() +     
    draw_plot(p1, x=0, y=0.5, width=0.5, height=0.5) +  
    draw_plot(p2, 0, 0, 0.5, 0.5) +   
    draw_plot(p3, 0.5, 0, 0.5, 0.5) + 
  draw_plot(p4,0.5, 0.5, 0.5, 0.5)
gg
#Enrichment Map
emapplot(ego)
#(4)展示通路关系
goplot(ego)
#(5)Heatmap-like functional classification
heatplot(ego,foldChange = geneList)

像最后的热图,不调整比例的话不好看

pdf("heatplot.pdf",width = 14,height = 5)
heatplot(ego,foldChange = geneList)
dev.off()
#> RStudioGD 
#>         2

4.gsea-GO分析

ego2 <- gseGO(geneList     = geneList2,
              OrgDb        = org.Hs.eg.db,
              ont          = "CC",
              nPerm        = 1000,
              minGSSize    = 100,
              maxGSSize    = 500,
              pvalueCutoff = 0.05,
              verbose      = FALSE)
#gsea
ridgeplot(ego2)
#> Picking joint bandwidth of 0.131
#gesa图
gseaplot2(ego2, geneSetID = 1, title = ego2$Description[1])
#多条
gseaplot2(ego2, geneSetID = 1:3)
#加table
gseaplot2(ego2, geneSetID = 2:4, pvalue_table = TRUE)
#上下三联

pp <- lapply(1:3, function(i) {
  anno <- ego2[i, c("NES", "pvalue", "p.adjust")]
  lab <- paste0(names(anno), "=",  round(anno, 3), collapse="\n")
  
  gsearank(ego2, i, ego2[i, 2]) + xlab(NULL) +ylab(NULL) +
    annotate("text", 0, ego2[i, "enrichmentScore"] * .9, label = lab, hjust=0, vjust=0)
})
plot_grid(plotlist=pp, ncol=1)

保存时调比例

ggsave("try.pdf",width = 15,height = 18)

公众号生信星球同步更新我的文章,欢迎大家关注!

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

推荐阅读更多精彩内容