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

如何在R的ggplot2中绘制留存学生占比的热力图?

计算留存学生占比并绘制热力图的解决方案

我明白你想要的是每个年-月-周组合里,留存学生(Retention_Status=1)的数量占该时间段总人数的比例热力图,之前的代码只是统计了各分组的count,确实需要调整数据处理逻辑来计算占比。这里有两种简洁的实现方式,你可以根据自己的习惯选择:

方法一:先统计分组count再计算占比

这种方式和你原来的代码逻辑衔接更紧密,先保留你原有的分组统计步骤,再拓展计算占比:

library(dplyr)
library(ggplot2)

# 1. 先按年、月、周、留存状态分组统计人数
Admit_grouped <- Admit %>%
  group_by(year, month, week, Retention_Status) %>%
  summarize(count = n(), .groups = "drop")  # .groups="drop"避免后续分组冲突

# 2. 按年、月、周分组计算总人数,再算出留存占比
Admit_retention_ratio <- Admit_grouped %>%
  group_by(year, month, week) %>%
  mutate(
    total_weekly = sum(count),  # 计算该年月周的总学生数
    retention_ratio = ifelse(Retention_Status == 1, count / total_weekly, NA)
  ) %>%
  filter(!is.na(retention_ratio))  # 只保留留存状态为1的占比数据

# 3. 绘制热力图
ggplot(Admit_retention_ratio, aes(x = 1, y = week, fill = retention_ratio)) +
  geom_tile(colour = "white") +
  facet_grid(year ~ month) +
  scale_fill_gradient(
    low = "red", 
    high = "green", 
    labels = scales::percent  # 将小数转换为百分比显示
  ) +
  labs(
    title = "学生周留存占比热力图",
    x = "",  # 因为x轴只有1个类别,无需标注
    y = "周数",
    fill = "留存占比"
  )

方法二:一步到位计算留存占比(更高效)

因为你的Retention_Status是0和1的标识,我们可以直接利用均值来计算占比——把Retention_Status == 1转换为布尔值(TRUE=1,FALSE=0),取均值就是留存的比例,代码更简洁:

library(dplyr)
library(ggplot2)

# 直接按年、月、周分组,计算留存占比
Admit_retention_ratio <- Admit %>%
  group_by(year, month, week) %>%
  summarize(
    retention_ratio = mean(Retention_Status == 1),
    .groups = "drop"
  )

# 绘制热力图(和方法一的绘图代码一致)
ggplot(Admit_retention_ratio, aes(x = 1, y = week, fill = retention_ratio)) +
  geom_tile(colour = "white") +
  facet_grid(year ~ month) +
  scale_fill_gradient(
    low = "red", 
    high = "green", 
    labels = scales::percent
  ) +
  labs(
    title = "学生周留存占比热力图",
    x = "",
    y = "周数",
    fill = "留存占比"
  )

关键说明

  • 两种方法最终的绘图效果是一致的,方法二更高效,少了一次分组统计的步骤
  • scales::percent用来把0-1的小数转换为百分比格式,让图例更直观易懂
  • 如果你的Retention_Status后续有其他取值(比如不是0/1),方法一的兼容性更强,只需要调整ifelse里的条件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:43:25