You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:23:27