能否在clusterProfiler的dotplot函数中添加颜色参数并支持ggplot2链式语法
使用ggplot2链式语法自定义clusterProfiler dotplot的颜色
如果你不想用全局options(enrichplot.colours = ...)设置颜色,完全可以通过ggplot2的链式语法直接给dotplot添加颜色映射规则,以下是具体实现步骤:
1. 前置准备:生成富集分析对象ego
先运行以下代码生成GO富集分析结果对象ego:
# 加载所需包 library(clusterProfiler) library(enrichplot) library(org.Hs.eg.db) library(ggplot2) # 差异基因列表 signif_genes <- c("TGFB2", "IFNG", "IL10", "IDO", "NLRP1", "IL1B", "NAMPT", "LAG3", "NFE2L2", "NLRP3", "PIK3CB", "CDKN2A", "CD86") # 执行GO富集分析(生物过程BP) ego <- enrichGO(gene = signif_genes, keyType = "SYMBOL", # 基因类型为SYMBOL OrgDb = org.Hs.eg.db, ont = "BP", # 可选MF(分子功能)、CC(细胞组分) pAdjustMethod = "none", qvalueCutoff = 0.05, readable = FALSE)
2. 用ggplot2链式语法自定义dotplot颜色
clusterProfiler的dotplot函数返回的是ggplot对象,所以可以直接叠加ggplot2的scale系列函数修改颜色:
示例1:基于默认p.adjust值的渐变颜色
# 绘制dotplot并自定义颜色渐变,同时调整y轴文本大小 clusterProfiler::dotplot(ego, showCategory = 15) + theme(axis.text.y = element_text(size = 8)) + scale_color_gradient(low = "green", high = "red")
示例2:改用qvalue作为颜色映射变量
如果想基于qvalue而非默认的p.adjust着色,需在dotplot中指定color参数,再对应调整scale:
clusterProfiler::dotplot(ego, showCategory = 15, color = "qvalue") + theme(axis.text.y = element_text(size = 8)) + scale_color_gradient(low = "blue", high = "orange")
示例3:使用离散区间着色
如果想把连续的p值/q值分成离散区间着色,可使用scale_color_binned:
clusterProfiler::dotplot(ego, showCategory = 15) + theme(axis.text.y = element_text(size = 8)) + scale_color_binned(type = "viridis", breaks = c(0, 0.01, 0.03, 0.05))
注意事项
- 必须加载
ggplot2包,否则无法识别theme和scale_*系列函数 dotplot默认颜色映射变量为p.adjust,如需更换,需通过color参数指定可选值:pvalue、p.adjust、qvalue
内容的提问来源于stack exchange,提问作者Javier Hernando
相关产品推荐
相关产品推荐

