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

如何为ggplot2的facet_grid()变量创建自定义图例?

在ggplot2中为facet_grid的缩写标签添加独立图例(保留热图颜色渐变图例)

下面提供两种实用方案,核心思路是单独绘制缩写-全称的对应图例,再与主热图拼接,既保留原热图的颜色渐变图例,又实现通路缩写的自定义说明:

方法1:使用patchwork包拼接(推荐,布局灵活)

步骤1:准备数据(含缩写-全称对照表)

先确保你有热图数据,以及通路缩写和全称的对应表:

library(ggplot2)
library(patchwork)

# 模拟热图数据(替换为你的实际数据)
set.seed(123)
heat_data <- expand.grid(
  Gene = paste0("Gene", 1:10),
  Sample = paste0("Sample", 1:5),
  Pathway_abbr = c("Met", "Sig", "Imm") # 你的通路缩写
)
heat_data$Expression <- rnorm(nrow(heat_data))

# 缩写-全称对照表(替换为你的实际对应关系)
pathway_key <- data.frame(
  abbr = c("Met", "Sig", "Imm"),
  full_name = c("Metabolic Pathway", "Signal Transduction", "Immune Response")
)

步骤2:绘制主热图(保留颜色图例和facet缩写标签)

正常绘制热图,使用缩写作为facet标签,保留原有的颜色渐变图例:

p_heat <- ggplot(heat_data, aes(x = Sample, y = Gene, fill = Expression)) +
  geom_tile(color = "white") +
  # 按通路缩写分组,y轴自由缩放适配不同基因数量
  facet_grid(Pathway_abbr ~ ., scales = "free_y", space = "free_y") +
  # 你的颜色渐变标尺(替换为实际的颜色映射)
  scale_fill_viridis_c(name = "Expression Level") +
  theme_bw() +
  theme(
    strip.text.y = element_text(face = "bold"), # 加粗facet缩写标签
    legend.position = "right" # 保留颜色图例在右侧
  )

步骤3:绘制缩写对应图例

单独制作一个仅展示缩写-全称对应关系的"图例"图:

p_abbr_legend <- ggplot(pathway_key, aes(y = reorder(abbr, desc(abbr)))) +
  # 绘制与facet一致的缩写
  geom_text(aes(label = abbr), x = 0.8, color = "black", fontface = "bold") +
  # 绘制通路全称
  geom_text(aes(label = full_name), x = 1.2, color = "gray40") +
  # 添加分隔线区分缩写与全称
  geom_vline(xintercept = 1, linetype = "dashed", color = "gray60") +
  # 清除多余元素,只保留核心文本
  theme_void() +
  labs(title = "Pathway Abbreviation") +
  theme(
    plot.title = element_text(hjust = 0.5, size = 10, face = "bold"),
    plot.margin = margin(5, 5, 5, 5)
  )

步骤4:拼接热图和自定义图例

用patchwork调整布局比例,把自定义图例放在热图右侧:

# 宽度比例可根据实际需求调整
p_heat + p_abbr_legend + plot_layout(widths = c(8, 2))

方法2:使用gridExtra包拼接(替代方案)

如果不想用patchwork,也可以用gridExtra::grid.arrange实现相同效果:

library(gridExtra)
grid.arrange(p_heat, p_abbr_legend, widths = c(8, 2))

效果说明

  • 原热图的颜色渐变图例完全保留,用于展示表达量的数值映射
  • 新增的独立图例清晰展示每个facet缩写对应的通路全称
  • facet区域的缩写标签依然保留,方便快速对应分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:07:32