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

如何使用ggplot绘制关联基因与聚类的带彩色侧边栏DotPlot

带基因来源聚类侧边栏的DotPlot实现方案

问题排查

你的现有代码存在三个核心问题:

  • y轴映射错误:翻转后的DotPlot y轴为基因,你的侧边栏错误将y映射为cluster,导致顺序完全不匹配
  • 颜色映射未显式绑定:未指定填充色和聚类的一一对应关系,R自动分配颜色导致和主图聚类色不一致
  • 未对齐主图基因顺序:侧边栏基因顺序和主图不同步,会出现基因和对应聚类色块错位

修正后完整实现代码

步骤1:同步主图与侧边栏的基因顺序

# 提取主图p1的y轴基因顺序,保证两边完全匹配
gene_order <- levels(as.factor(ggplot_build(p1)$layout$panel_params[[1]]$y$get_labels()))
# 重设top10_filter的gene因子顺序,和主图完全一致
top10_filter <- top10_filter %>%
  mutate(gene = factor(gene, levels = gene_order))

步骤2:生成匹配的聚类侧边栏

library(patchwork)

labels <- ggplot(top10_filter, aes(x = 1, y = gene, fill = cluster)) + 
  geom_tile(color = "white") +
  # 显式绑定填充色为你主图使用的聚类调色板,保证颜色完全一致
  scale_fill_manual(values = my_palette_Rui_colors) + 
  theme_void() +
  theme(legend.position = "none") +
  xlim(c(0.5, 1.5))

步骤3:拼接主图与侧边栏

# 调整宽度比例,主图占10份,侧边栏占1份,可根据需求调整
p1 + labels + plot_layout(widths = c(10, 1))

逻辑说明

参考示例的核心逻辑是用geom_tile生成色块映射分组属性,和你的需求完全适配:参考示例是x轴为聚类、填充映射细胞类型,你的需求是y轴为基因、填充映射基因来源聚类,仅调整轴映射方向即可复用逻辑。
注意事项:如果你的主图使用的聚类调色板是命名向量(键为聚类名、值为颜色),scale_fill_manual会自动匹配对应颜色,无需额外调整

内容的提问来源于stack exchange,提问作者Alvaro Regano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:03