首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >enrichplot的作者来介绍新功能啦,您不来看看吗?

enrichplot的作者来介绍新功能啦,您不来看看吗?

作者头像
作图丫
发布于 2022-03-29 06:37:43
发布于 2022-03-29 06:37:43
3.7K30
代码可运行
举报
文章被收录于专栏:作图丫作图丫
运行总次数:0
代码可运行

导语

GUIDE ╲

enrichplot是一个非常受欢迎的R包,在官网上每年均有数万次独立IP下载。Bioconductor上共有1905个R包,enrichplot下载量排第45位。它不仅可以对我们本实验室开发的clusterProfiler、DOSE、ReactomePA和meshes等R包的结果进行展示,也有不少R包使用enrichplot进行可视化展示,如:gprofiler2。之前已经有师妹发布了一篇关于使用enrichplot可视化的文章,写的文笔很好,内容讲解也挺细致。enrichplot一直在开发中,会不断有新的功能出现。这次小编便以开发者的身份对它的新功能以及部分隐藏功能做个介绍。

准备工作

enrichplot是发布在Bioconductor上的,师妹在上篇文章中已经介绍了它的安装方法enrichplot—简而美的富集结果可视化!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("enrichplot")

对Bioconductor熟悉的朋友应该知道,它是每半年对R包进行一次更新。而勤奋如我们(哈哈!),可能每个月都会给enrichplot增添新的特性。因此如果想尝试更多的新功能的朋友可以安装它的开发版:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(!requireNamespace("devtools", quietly = TRUE))
    install.packages("devtools")

devtools::install_github("YuLab-SMU/enrichplot")
devtools::install_github("YuLab-SMU/clusterProfiler")
devtools::install_github("YuLab-SMU/DOSE")

有些朋友因为网速问题,直接从Github上安装enrichplot会有些困难。这里给大家讲一些小技巧(一般人我不告诉他!):

1、可以先从Github上用迅雷等工具把安装包的zip文件(https://github.com/YuLab-SMU/enrichplot)下载下来,然后使用devtools::install_local()进行安装即可。

2、一些朋友网速实在太差,导致某些依赖包安装不上去,这时可以将R语言的下载方式改为libcurl,并使用国内镜像(如清华镜像):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
options(download.file.method = 'libcurl') 
options(url.method='libcurl')
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")

如果上述两个步骤都做了,但还是某些R包装不上,在这里小编心疼你的网速几秒钟。这时你看到提示安装失败的R包后,还可以手动下载它们的安装包(源码格式或者二进制格式都可以),然后手动安装。

绘图函数

01

点图

很多人问这种点图是怎么做出来的:

其实很简单。dotplot支持ggplot2的各种操作,只需要一个分面就完成啦。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(clusterProfiler)
library(enrichplot)
library(DOSE)
library(org.Hs.eg.db)
data(geneList)
de <- names(geneList)[1:100]
x <- enrichGO(de, 'org.Hs.eg.db', ont = "ALL", pvalueCutoff=0.01)
table(x$ONTOLOGY)
shows <- as.data.frame(x)[c(1:10, 166:176, 194:204), "ID"]
p <- dotplot(x, showCategory = shows) +facet_grid(ONTOLOGY ~ ., scales="free")

这个例子展示的是对单组基因富集结果的点图可视化。其实我们的dotplot是可以对多组基因的富集结果进行展示的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(gcSample)
xx <- compareCluster(gcSample, fun="enrichKEGG",
                     organism="hsa", pvalueCutoff=0.05)
## 如果大家这一步出现下载不完全的现象,请安装github上最新版的clusterProfiler
dotplot(xx)

02

Gene-Concept Network

`cnetplot`函数可以将基因与它们所富集到的 biological concepts(如GO terms和KEGG pathways等)之间的复杂联系用网络图清晰的展现出来。对于单组数据的可视化,师妹在之前的文章中已有介绍。其实cnetplot有众多的参数来支持用户来定制这个网络图,如节点大小,节点label大小,layout等,具体可参考我们提供的帮助文档。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

library(DOSE)
data(geneList)
de <- names(geneList)[abs(geneList) > 2]
edo <- enrichDGN(de)
edox <- setReadable(edo, 'org.Hs.eg.db', 'ENTREZID')
p1 <- cnetplot(edox, foldChange=geneList)
## categorySize can be scaled by 'pvalue' or 'geneNum'
p2 <- cnetplot(edox, categorySize="pvalue", foldChange=geneList)
p3 <- cnetplot(edox, foldChange=geneList, circular = TRUE, colorEdge = TRUE)
cowplot::plot_grid(p1, p2, p3, ncol=3, labels=LETTERS[1:3], rel_widths=c(.8, .8, 1.2))

有朋友说画出的网络图没有边,这个锅我们是不背的。大家可以保存成pdf,这样就会发现它其实是有边的。

一些朋友可能还不知道,我们的cnetplot是支持多组数据富集结果的可视化的。以`gcSample`数据为例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(gcSample)
str(gcSample)
## List of 8
##  $ X1: chr [1:216] "4597" "7111" "5266" "2175" ...
##  $ X2: chr [1:805] "23450" "5160" "7126" "26118" ...
##  $ X3: chr [1:392] "894" "7057" "22906" "3339" ...
##  $ X4: chr [1:838] "5573" "7453" "5245" "23450" ...
##  $ X5: chr [1:929] "5982" "7318" "6352" "2101" ...
##  $ X6: chr [1:585] "5337" "9295" "4035" "811" ...
##  $ X7: chr [1:582] "2621" "2665" "5690" "3608" ...
##  $ X8: chr [1:237] "2665" "4735" "1327" "3192" ...

这里的基因都是基因ID。如果希望显示出gene symbol,可以使用`setReadable`进行转换。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xx <- compareCluster(gcSample, fun="enrichKEGG",
                     organism="hsa", pvalueCutoff=0.01)
# `setReadable` fucntion can convert gene from gene ID to gene symbol.
xx@readable = FALSE
xxx <- setReadable(xx, 'org.Hs.eg.db', 'ENTREZID')
p1 <- cnetplot(xxx, legend_n = 3)
p2 <- cnetplot(xx, legend_n = 3)
p <- cowplot::plot_grid(p1, p2, ncol=2, labels=LETTERS[1:2])
ggsave(p, file="cnetplot_multi.pdf")

当然,自由调节layout的功能是必须有的!

如果大家跑这段代码发现参数错误,那可能是我们更新了参数,或者大家的R包版本太老了的缘故。只要在R中输入"?cnetplot"查看一下你们电脑里相应版本的文档即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p1 <- cnetplot(xxx, layout="nicely",node_label="none",
              legend_n = 3)
p2 <- cnetplot(xxx, layout="circle", node_label="none",
               cex_category = 0.05, cex_gene = 0.05,
               legend_n = 3)
p3 <- cnetplot(xxx, layout="kk",node_label="none",
              legend_n = 3)
p4 <- cnetplot(xxx,circular = TRUE,,cex_category = 0.05, 
               cex_gene = 0.05, node_label="none",
               legend_n = 3)
cowplot::plot_grid(p1, p2, p3, p4, ncol=2, labels=LETTERS[1:4])

03

Enrichment Map

大家可能也猜到了,`emapplot`函数同样支持多组数据结果的可视化。至于它的用法跟centplot类似,就不用代码占篇幅了。小编这里要介绍一种新的图形:

这个图叫做功能分组网络图。这里的每一个节点都是一个通路/功能。此图可以将这些通路/功能根据相似性聚成功能组,并且支持多种相似性计算算法。当然了,既然是enrichplot出品,那必须是既能支持单组数据,又能支持多组数据啦。并且我们还提供了两种group label的表现形式:

此函数名为emapplot_cluster。如果大家用enrichplot用的比较多的话,会发现每种函数用起来都很类似。此函数的具体用法大家可关注“作图丫”公众号,我们后续会进行详细讲解。

小编总结

由于公众号里不适合太长的篇幅,因此小编没有将enrichplot的所有新功能介绍完。而enrichplot也会一直进行开发与维护,大家所能想到的所有富集分析的优秀可视化,enrichplot都将会支持,并且enrichplot支持多个富集分析软件结果的可视化。因此,当你做完富集分析但不知道要以哪种图形展现时,别犹豫了,打开enrichplot看看吧,你想要的,我们全都有!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
3 条评论
热度
最新
p <- dotplot(x, showCategory = shows) +facet_grid(ONTOLOGY ~ ., scales="free")
p <- dotplot(x, showCategory = shows) +facet_grid(ONTOLOGY ~ ., scales="free")
回复回复点赞举报
这个报错怎么解决啊
这个报错怎么解决啊
回复回复点赞举报
pError in `combine_vars()`:! Faceting variables must have at least one valueRun `rlang::last_error()` to see where the error occurred.>
pError in `combine_vars()`:! Faceting variables must have at least one valueRun `rlang::last_error()` to see where the error occurred.>
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
RNA-seq入门实战(六):GO、KEGG富集分析与enrichplot超全可视化攻略
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
14.7K0
RNA-seq入门实战(六):GO、KEGG富集分析与enrichplot超全可视化攻略
RNA-seq入门实战(七):GSEA——基因集富集分析
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
15.9K0
RNA-seq入门实战(七):GSEA——基因集富集分析
enrichplot富集分析可视化
上一次推文已经给大家介绍了常见的富集分析类型以及如何使用全能的R包clusterprofiler实现,详情请见:富集分析常见类型
医学和生信笔记
2023/08/30
1.8K0
enrichplot富集分析可视化
美化clusterProfiler富集分析结果:enrichplot包中的cnetplot
Y叔为啥要开发cnetplot函数来画图呢,需要我们先理解一个概念:基因-概念网络 (Gene-Concept Network) GCN
生信小博士
2024/03/30
5.5K1
美化clusterProfiler富集分析结果:enrichplot包中的cnetplot
GSEA确实搭配热图后更直观易懂
其中生物学功能数据库注释目前最稳妥的是GSEA方法,但是文章在标准的gsea图下面加上了一个热图,蛮有意思的:
生信技能树
2022/12/16
1.6K0
GSEA确实搭配热图后更直观易懂
enrichplot—简而美的富集结果可视化!
enrichplot实现了多种可视化方法来解释富集结果。支持从DOSE (Yu et al. 2015)、clusterProfiler (Yu et al. 2012)、ReactomePA (Yu and He 2016)和meshes获得的富集结果进行可视化。同时支持过表达分析(ORA)和基因集富集分析(GSEA)。今天我们来展示enrichplot神奇的绘图功能。
作图丫
2022/03/29
4.3K0
enrichplot—简而美的富集结果可视化!
GO、GSEA富集分析一网打进
富集分析是生物信息分析中快速了解目标基因或目标区域功能倾向性的最重要方法之一。其中代表性的计算方式有两种: 一是基于筛选的差异基因,采用超几何检验判断上调或下调基因在哪些GO或KEGG或其它定义的通路富集。假设背景基因数目为m,背景基因中某一通路pathway中注释的基因有n个;上调基因有k个,上调基因中落于通路pathway的数目为l。简单来讲就是比较l/k是否显著高于n/m,即上调基因中落在通路pathway的比例是否高于背景基因在这一通路的比例。(实际计算时,是算的odds ratio的差异,l/(k
生信宝典
2018/02/05
4.6K0
GO、GSEA富集分析一网打进
基因集富集分析(GSEA)及其可视化
基因集富集分析(Gene Set Enrichment Analysis, GSEA)是是一种计算方法,用于确定事先定义的一组基因是否在不同的样品中差异表达。
青青青山
2022/07/04
8.3K0
基因集富集分析(GSEA)及其可视化
生信技能树-day20 转录组下游分析-富集分析
今天的是三周合计15天的数据挖掘授课学员一点一滴整理的授课知识点笔记哦,还有互动练习题哈,欢迎大家点击文末的阅读原文去关注我们学员的公众号哦!
生信菜鸟团
2024/06/25
4983
生信技能树-day20 转录组下游分析-富集分析
go富集分析和kegg富集分析的区别_非模式生物怎么做GO富集
关于clusterProfiler这个R包就不介绍了,网红教授宣传得很成功,功能也比较强大,主要是做GO和KEGG的功能富集及其可视化。简单总结下用法,以后用时可直接找来用。
全栈程序员站长
2022/09/20
2.1K0
四句话代码GSEA
需要3个包,分别是:'clusterProfiler','enrichplot','patchwork',然后是DOSE包里面有一个geneList的向量,它是排序好的基因列表,而且是entrezID形式,使用 gseKEGG 函数即可做gsea分析啦 :
生信技能树
2024/11/27
2560
四句话代码GSEA
GseaVis富集分析可视化
今天要介绍的老俊俊的R包:GseaVis,专门用于GSEA富集分析可视化,相比于enrichplot,增加了很多好用的功能,很多功能让我直呼 泰裤辣!!
医学和生信笔记
2023/08/30
1.3K0
GseaVis富集分析可视化
R语言基于Reactome数据库的富集分析
大家对通路富集分析应该很熟悉,今天给大家介绍下那些漂亮的可视化展示。我们需要用到包ReactomePA,这个包主要是基于Reactome数据库进行通路富集,此包支持including ‘celegans’,‘fly’, ‘human’, ‘mouse’, ‘rat’, ‘yeast’ and ‘zebrafish’。首先我们看下包的安装:
一粒沙
2020/09/10
13.3K0
R语言基于Reactome数据库的富集分析
一文厘清富集分析:GroupGO、enrichGO、gseGO、enrichKEGG、gseKEGG、enrichMKEGG
生物学研究中,我们常常面对成百上千的基因数据,例如转录组或蛋白质组数据。在基因差异表达分析之后,你得到了差异基因,可能几个到上百个不等,单纯分析单个基因的意义有限,而从庞大的基因关系网络中提取有效信息也十分耗时。
生信菜鸟团
2025/04/06
6710
一文厘清富集分析:GroupGO、enrichGO、gseGO、enrichKEGG、gseKEGG、enrichMKEGG
单细胞功能注释和富集分析(GO、KEGG、GSEA)(2021公开课配套笔记)
在前面几节我们已经知道各个细胞亚群的maerker基因,接下来我们对这些marker基因进行功能注释和富集分析。
生信技能树
2021/07/06
19.1K1
为R包写一本书(像Y叔致敬)
这个时候我还是推荐了Y叔的clusterProfiler ,就去找了找其官网,的确可视化方法又多了几个:
生信技能树
2019/12/12
1.7K0
为R包写一本书(像Y叔致敬)
R tips:调整ggplot2的坐标轴或legend的label长度
clusterProfiler包用于富集分析和可视化是非常好用的,语法简洁而统一。
王诗翔呀
2022/01/21
7.1K0
R tips:调整ggplot2的坐标轴或legend的label长度
多元化展示基因列表和其对应的具体基因的关系
看到了一个生物信息学数据挖掘,标题是:《Novel ferroptosis gene biomarkers and immune infiltration profiles in diabetic kidney disease via bioinformatics》,通过大量的数据分析拿到了11个FRDEGs基因列表,然后去对这11个基因进行“屎上雕花”,它们分别是: (ALOX5, CCL5, FHL2, G0S2,IGKC,KRT19,LCN2,LTF,PRKCB,RRM2,TUBA1A) ,比如下面的go数据库的注释结果,就使用了4种展示策略 :
生信技能树
2024/05/27
1860
多元化展示基因列表和其对应的具体基因的关系
富集分析常见类型
前期主要是以医学统计和临床预测模型为主,关于生信挖掘和机器学习的内容偏少,所以后面会逐渐增加这方面的内容,除了常见的生信分析外,还会涉及一些SCI图表学习等内容。
医学和生信笔记
2023/08/30
1.3K0
富集分析常见类型
上下调基因各自独立进行GO数据库的3分类富集(求美图代码)
我们通常呢,挑选差异基因,会选择那些log2FC比较大而且具有统计学显著性的上下调基因,不过加上MA图,就可以进一步挑选那些表达量也比较高的,因为这样的基因呢,容易去实验验证。而且呢,通常情况下常识会告诉我们高表达量基因更容易发挥作用。
生信技能树
2021/07/29
5.2K0
推荐阅读
相关推荐
RNA-seq入门实战(六):GO、KEGG富集分析与enrichplot超全可视化攻略
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验