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

在R中制作带数值及无填充行列的热图

在R中制作带数值且包含无填充列/行的热图

我来帮你实现这个需求!结合tidyverse系列工具包(包含ggplot2、dplyr等),我们可以轻松做出满足要求的热图——既能在单元格内显示数值,还能指定某些列/行不应用填充效果。下面是完整的步骤和代码:

首先,先加载需要的工具包:

library(tidyverse) # 一站式数据处理+绘图工具集

1. 准备示例数据

根据你提供的内容,我先构造一个完整的示例数据集(你可以直接替换成自己的真实数据):

df <- tibble(
  Year = c(1999, 2000, 2001, 2002, 2003),
  Jan = c(116, 114, 124, 107, 121),
  Feb = c(127, 154, 134, 137, 142),
  Mar = c(202, 193, 194, 199, 205),
  Apr = c(229, 214, 202, 213, 220),
  May = c(253, 263, 256, 267, 260),
  Jun = c(271, 271, 270, 269, 272),
  Jul = c(271, 254, 270, 267, 270),
  Aug = c(245, 248, 243, 250, 247),
  Sep = c(212, 210, 212, 211, 215),
  Oct = c(174, 167, 176, 153, 170),
  Nov = c(133, 120, 128, 123, 130),
  Dec = c(115, 102, 108, 109, 112),
  Sum = c(2348, 2310, 2317, 2304, 2333)
)

2. 数据格式转换(宽→长)

ggplot2需要长格式数据才能绘制热图,我们同时添加一个标记列,用来区分需要填充颜色的列(Jan-Dec)和不需要填充的列(Sum):

df_long <- df %>%
  pivot_longer(cols = -Year, names_to = "Month", values_to = "Value") %>%
  # 标记哪些列需要填充:Sum列设为FALSE,其余月份设为TRUE
  mutate(is_fill = ifelse(Month == "Sum", FALSE, TRUE))

3. 绘制符合要求的热图

核心思路是:仅对标记为is_fill == TRUE的单元格添加填充色,同时给所有单元格显示数值,最后调整样式让图表更美观:

ggplot(df_long, aes(x = Month, y = factor(Year))) +
  # 仅为月份列添加热图填充,白色边框区分单元格
  geom_tile(data = filter(df_long, is_fill), aes(fill = Value), color = "white") +
  # 给所有单元格添加数值文本,控制大小和颜色
  geom_text(aes(label = Value), size = 3.5, color = "black") +
  # 设置填充色渐变(这里用viridis色系,你也可以换成冷暖渐变的scale_fill_gradient2)
  scale_fill_viridis_c(option = "plasma", name = "数值大小") +
  # 调整坐标轴和标题
  labs(x = "", y = "年份", title = "各月份数值热图(Sum列无填充)") +
  # 优化主题样式:去掉冗余网格,调整文本角度和位置
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    axis.text.y = element_text(size = 10),
    axis.text.x = element_text(size = 10, angle = 45, hjust = 1),
    legend.position = "right"
  )

效果说明

  • 所有单元格都会清晰显示对应数值,不会被填充色遮挡
  • Sum列没有填充色,和月份列形成明显区分,突出总和的特殊性
  • 如果需要让某些行不填充(比如某一行是汇总行),只需要修改is_fill的标记逻辑,把对应行设为FALSE即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:26:29