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

在ggplot2生存日历图中按rx分组为geom_segment设置线条颜色

按rx变量设置geom_segment线条颜色的解决方案

要实现根据rx变量为geom_segment分组设置颜色(rx=0为蓝色,rx=1为红色),只需在geom_segment中绑定颜色映射,再手动指定对应颜色即可,完全保留原有图形的其他设置。

修改后的示例代码

以下是适配需求的完整代码(可替换为你的实际数据):

# 加载依赖包
library(ggplot2)
library(survival)

# 模拟示例数据(替换为你的真实数据集)
set.seed(123)
surv_data <- data.frame(
  Id = 1:15,
  rx = sample(c(0,1), 15, replace = TRUE),
  start_date = as.Date("2020-01-01") + sample(1:100, 15),
  end_date = as.Date("2020-01-01") + sample(101:200, 15),
  event = sample(c(0,1), 15, replace = TRUE)
)

# 绘制生存日历图
ggplot(surv_data, aes(y = Id)) +
  # 保留原有辅助竖线设置
  geom_vline(xintercept = as.Date(c("2020-04-01", "2020-07-01")), 
             linetype = "dashed", color = "gray50") +
  # 生存线段:按rx变量映射颜色
  geom_segment(aes(x = start_date, xend = end_date, yend = Id, color = factor(rx)),
               size = 1.2) +
  # 保留原有事件散点设置
  geom_point(aes(x = end_date, shape = factor(event)), size = 3) +
  # 自定义颜色规则:rx=0对应蓝色,rx=1对应红色
  scale_color_manual(values = c("0" = "blue", "1" = "red"),
                     labels = c("rx=0", "rx=1")) +
  # 保留原有标签、主题等设置(按需调整)
  labs(x = "日期", y = "患者ID", color = "治疗分组", shape = "事件状态") +
  theme_minimal()

核心修改说明

  • 在geom_segment的aes参数中添加color = factor(rx),将线条颜色与rx变量绑定
  • 通过scale_color_manual明确指定颜色映射关系,确保rx=0显示蓝色、rx=1显示红色
  • 所有原有图形元素(辅助竖线、散点样式、主题等)均保持不变

修改后,rx=0的患者(如Id14、15)的生存线段会自动显示为蓝色,rx=1的患者线段则为红色,完全匹配需求。

内容的提问来源于stack exchange,提问作者Miguel Angel Arnau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:06:27