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

如何叠加Lexis Grid与热力图?R语言LexisPlotR+ggplot2技术求助

Lexis网格与热力图叠加解决方案

问题背景

要为1900-2021年间、0-80岁的合成人群队列事件制作带热力效果的Lexis Grid,已生成合成数据和基础Lexis网格,但无法将热力图(geom_tile())与网格叠加,两种尝试写法均失效。

解决步骤与代码

1. 修正数据创建的语法错误

原代码中data.frame()内部用<-赋值会导致列名异常,需替换为=:

df <- data.frame(
  year = sample(c(1900:2021), 1000, TRUE),
  age = sample(c(0:80), 1000, TRUE),
  event = sample(c(0:5), 1000, TRUE)
)

2. 正确叠加图层

LexisPlotR::lexis_grid()返回的是标准ggplot对象,只需在其基础上直接添加geom_tile()图层,不要嵌套调用ggplot(),同时注意明确指定数据和映射:

# 创建基础Lexis网格
mylexis <- lexis_grid(year_start = 1900, 
                      year_end = 2021, 
                      age_start = 0,
                      age_end = 80,
                      delta = 10
)

# 叠加热力图,调整透明度让网格线可见
mylexis + 
  geom_tile(data = df, aes(x = year, y = age, fill = factor(event)), alpha = 0.7) +
  # 可选:优化颜色与图例
  scale_fill_viridis_d(name = "事件类型") +
  theme_bw()

原写法失败原因

  • 第一种写法错误使用year(year):原数据的year已是数值型年份,无需转换;且未明确指定data=参数,图层映射逻辑混乱。
  • 第二种写法嵌套ggplot():ggplot2不支持在已有ggplot对象上嵌套新的ggplot()调用,只能通过+添加图层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:20:38