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

基于ggplot绘制含特定事件的患者用药剂量时间序列图

问题描述

我有一批患者在研究周期内接受不同剂量的药物治疗,希望通过ggplot展示用药剂量随时间的变化情况,同时在特定日期标注患者发生的事件。

现有示例数据集及基础ggplot代码:

ID <- (rep(c(1, 2),each= 3))
Datum <- c("2017-05-06", "2017-06-07", "2017-08-04", "2017-06-24", "2017-07-05", "2017-10-01")
Dose <- c(50, 60, 70, 40, 50, 40)

Dat <- data.frame(ID, Datum, Dose)

ggplot( data = Dat, aes(Datum, Dose, color = ID, group = ID)) + geom_line() + geom_point()

当前已生成基础时间序列图,需添加特定事件:ID为1的患者在2017-06-28发生事件,ID为2的患者在2017-07-30及2017-10-10发生事件。请问是否无需手动操作即可添加这些事件?是否需要创建事件数据集并关联至绘图?注:并非所有患者都有事件,部分患者可能存在多个事件。


解决方案

核心结论

必须创建独立的事件数据集,无法完全跳过手动整理事件信息的步骤——毕竟事件的日期和对应患者是额外的业务数据,ggplot无法自动识别这类未结构化的信息。

具体实现步骤

  1. 构建事件数据集
    把患者的事件信息整理成数据框,包含ID、事件日期Event_Date,还可按需添加事件描述Event(用于后续标注):

    # 创建事件数据集
    events <- data.frame(
      ID = c(1, 2, 2),
      Event_Date = c("2017-06-28", "2017-07-30", "2017-10-10"),
      Event = c("事件A", "事件B", "事件C") # 可选字段,用于标注文本
    )
    
  2. 统一日期格式
    将原数据和事件数据的日期列转换为标准日期类型,避免ggplot识别错误:

    Dat$Datum <- as.Date(Dat$Datum)
    events$Event_Date <- as.Date(events$Event_Date)
    
  3. 在ggplot中添加事件标注
    可以用geom_vline绘制垂直参考线标记事件日期,配合geom_text/geom_label添加事件说明,也可用点标记事件位置:

    ggplot(data = Dat, aes(x = Datum, y = Dose, color = factor(ID), group = ID)) +
      geom_line() +
      geom_point(size = 2) +
      # 添加事件垂直虚线
      geom_vline(data = events, aes(xintercept = Event_Date, color = factor(ID)), 
                 linetype = "dashed", alpha = 0.7) +
      # 添加事件文本标注,调整y轴位置避免和剂量线重叠
      geom_text(data = events, aes(x = Event_Date, y = ifelse(ID == 1, 75, 55), 
                                  label = Event, color = factor(ID)),
                hjust = 0.5, vjust = 0, size = 3.5) +
      labs(x = "日期", y = "药物剂量", color = "患者ID") +
      theme_minimal()
    

补充说明

  • 若不需要文本标注,仅用geom_vline就能快速标记事件日期;
  • 可通过调整y参数控制文本标注的垂直位置,避免与剂量线重叠;
  • 无事件的患者不会出现在事件数据集中,ggplot会自动忽略,无需额外处理;
  • 多事件场景下,只要事件数据集中的每一行对应一个事件,ggplot会自动逐个绘制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:44:59