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

如何为数据集不同列分别生成带单元格数值的分组热力图

R ggplot2 按列生成带单元格标注的双轴标签热力图

实现思路

  1. 先将宽格式数据集转换为长格式,让每个分组+数值变量的组合对应单独一行,适配ggplot2的绘图逻辑
  2. 以数值变量名为x轴、分组取值为y轴绘制热力图,天然实现按列排布的需求
  3. 配置坐标轴参数实现上下、左右双侧显示对应标签,同时添加单元格文本标注

完整代码

首先加载所需依赖包:

library(tidyverse)

使用你提供的示例数据集,先做数据重构再绘图:

# 示例数据集
df<-structure(list(group = c("1", "2", "3", "4", "5", "6", "7"), 
    mean_eur = c(-129.567230632235, -22.2194324821243, 1342.96054365896, 
    -902.330543160851, -1489.68836579957, 927.850034173604, 0.0678674942780786
    ), mean_eur_abs = c(723.928762243989, 3769.9065702668, 6117.92527832234, 
    4047.2805615705, 6057.02130927563, 4124.27784143031, 5717.03080420487
    ), nr_obs = c(1123, 12.7372802960222, 16.3672687465791, 15.9754010695187, 
    16.4488279016581, 16.0794132524026, 13.343143812709)), row.names = c(NA, 
-7L), class = c("tbl_df", "tbl", "data.frame"))

# 宽表转长表
df_long <- df %>% 
  pivot_longer(cols = -group, names_to = "var_name", values_to = "value")

# 绘制热力图
ggplot(df_long, aes(x = var_name, y = group, fill = value)) +
  # 绘制热力图单元格,设置白色边框区分
  geom_tile(color = "white", linewidth = 1) +
  # 单元格内标注数值,保留2位小数可按需调整
  geom_text(aes(label = round(value, 2)), color = "black", size = 3.5) +
  # 配置x轴(数值变量名)上下双侧显示标签
  scale_x_discrete(position = "both") +
  # 配置y轴(分组取值)左右双侧显示标签
  scale_y_discrete(position = "both") +
  # 数值渐变配色,可按需替换为其他配色方案
  scale_fill_viridis_c() +
  # 标签配置,隐藏不必要的轴标题
  labs(x = NULL, y = NULL, fill = "数值") +
  # 主题优化,去除网格线更美观
  theme_minimal() +
  theme(
    axis.text = element_text(size = 11),
    panel.grid = element_blank()
  )

常用调整说明

  • 单元格标注的小数位数:修改geom_text中round(value, 2)的第二个参数即可
  • 配色:将scale_fill_viridis_c()替换为其他fill配色函数,比如scale_fill_gradient2(low = "blue", mid = "white", high = "red", midpoint = 0)适配正负值场景
  • 单元格边框:修改geom_tile的color(边框颜色)、linewidth(边框粗细)参数
  • 文字大小:调整geom_text的size参数、theme中axis.text的size参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:09:05