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

求推荐可绘制每行含多组关联信息热图的R语言包

实现带行附加信息热图的R工具包推荐

以下几个R工具包可以满足你绘制带多行相关信息(如产品、名称、编号)热图的需求:

1. ComplexHeatmap

这是绘制复杂热图的首选工具,原生支持在热图的行/列两侧添加多组注释信息,完全匹配你的需求。通过rowAnnotation()函数可以轻松定义多行附加信息,并且能和热图无缝整合。

示例代码:

library(ComplexHeatmap)
library(circlize)

# 构造模拟数据
set.seed(123)
heat_data <- matrix(rnorm(50), nrow = 10)
row_info <- data.frame(
  产品 = sample(c("A", "B", "C"), 10, replace = TRUE),
  名称 = paste0("产品_", 1:10),
  编号 = sprintf("ID%02d", 1:10)
)

# 创建行注释
row_anno <- rowAnnotation(
  df = row_info,
  col = list(产品 = c("A" = "#FF9999", "B" = "#99CCFF", "C" = "#99FF99")),
  show_annotation_name = TRUE
)

# 绘制热图
Heatmap(heat_data,
        name = "数值",
        left_annotation = row_anno,
        row_names_side = "right")

2. pheatmap

这个工具包更轻量,通过annotation_row参数可以直接传入包含附加信息的数据框,自动在热图左侧生成注释列。如果需要调整注释的样式,可以配合annotation_colors参数自定义颜色。

示例代码:

library(pheatmap)

# 用上面的模拟数据
pheatmap(heat_data,
         annotation_row = row_info,
         annotation_colors = list(产品 = c("A" = "#FF9999", "B" = "#99CCFF", "C" = "#99FF99")),
         show_rownames = FALSE)

3. ggplot2

如果你需要高度自定义的布局,可以用ggplot2手动构建。将热图数据和附加信息整合到同一个数据框,用geom_tile()绘制热图主体,再通过额外的文本图层展示附加信息。

示例代码:

library(ggplot2)
library(tidyr)

# 整理数据格式
heat_df <- heat_data %>%
  as.data.frame() %>%
  mutate(产品 = row_info$产品,
         名称 = row_info$名称,
         编号 = row_info$编号,
         行ID = 1:n()) %>%
  pivot_longer(cols = starts_with("V"), names_to = "列ID", values_to = "数值")

# 绘制带附加信息的热图
ggplot(heat_df, aes(x = 列ID, y = 行ID)) +
  geom_tile(aes(fill = 数值)) +
  geom_text(aes(y = 行ID, x = 0, label = 产品)) +
  geom_text(aes(y = 行ID, x = -1, label = 名称)) +
  geom_text(aes(y = 行ID, x = -2, label = 编号)) +
  scale_fill_viridis_c() +
  theme_minimal() +
  theme(axis.text.y = element_blank(),
        axis.title.y = element_blank())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:43:32