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

如何在R的ComplexHeatmap中自定义符号图例?

在ComplexHeatmap中添加自定义符号图例并保留原有图例

你可以通过ComplexHeatmap包的Legend()函数创建自定义符号图例,再结合draw()函数将其与原有热图图例合并显示。以下是修改后的完整代码:

library(ComplexHeatmap)

# 原有数据与行注释部分
rnames <- c("+","+","+", "-", "-","δ","δ","δ","δ", "*","*","*","h","h","h","h","h","h","h","h","u","u","u","u","u","u")
ha = rowAnnotation(foo = anno_mark(at = c(1:3,4:5,6:9,10:12,13:20,21:26), 
                                   labels = rnames))
names(rnames) = unique(A)

# 绘制热图
ht = Heatmap(data2,
        name = "Occurance",
        cluster_rows = FALSE,
        cluster_columns = FALSE,
        column_title = "已知RBP基因LCD重叠区域的氨基酸出现频率",
        row_title = "氨基酸", 
        column_title_gp = gpar(fontsize = 20),
        row_title_gp = gpar(fontsize = 30),
        row_split = A,
        right_annotation = ha,
        row_names_side = "left",
        row_names_gp = gpar(fontsize = 15)
        )

# 定义自定义图例的符号与对应标签
symbols <- c("δ", "*", "h", "u", "+", "-")
labels <- c("极性", "特殊", "疏水性", "独特性", "正电性", "负电性")

# 创建自定义图例
custom_legend <- Legend(
  title = "类型",
  type = "text",
  text = symbols,
  labels = labels,
  text_gp = gpar(fontsize = 15),  # 设置符号大小
  labels_gp = gpar(fontsize = 12) # 设置标签大小
)

# 合并原有图例与自定义图例并绘制
draw(ht, annotation_legend_list = list(custom_legend), merge_legends = TRUE)

关键说明:

  • Legend()函数中type="text"用于直接显示文本符号,text参数传入自定义符号,labels传入对应含义
  • draw()函数的annotation_legend_list参数用于添加自定义图例,merge_legends=TRUE确保原有"Occurance"图例和自定义图例合并展示
  • 可通过text_gp和labels_gp调整符号与标签的字体大小、样式

内容的提问来源于stack exchange,提问作者Dr. Coke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:25:43