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

使用ggsurvfit绘制分面分层KM曲线的问题及相关疑问

问题解决与答疑

1. 报错原因与修复代码

报错是因为你用survfit2(Surv(time, status) ~ sex)只拟合了sex分组的生存曲线,生成的绘图数据中没有surg变量,而facet_wrap(~surg)需要这个变量划分分面,因此触发缺失变量的错误。

要实现按sex分面,每个分面内展示surg分层生存曲线,需让模型拟合surg的分层,同时保留sex变量用于分面,正确代码如下:

library(survival)
library(ggsurvfit)

# 正确实现需求的代码
survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit() +
  add_confidence_interval() +
  facet_wrap(~sex, nrow = 1) # 按sex分面,每个分面内展示surg的分层曲线

2. 保持各分面颜色统一

默认情况下,只要分面内的分层变量为同一个(比如这里的surg),ggsurvfit会自动为相同水平分配一致的颜色。如果需要手动指定颜色,可使用scale_color_manual()和scale_fill_manual():

# 手动指定颜色确保分面一致
survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit() +
  add_confidence_interval() +
  facet_wrap(~sex, nrow = 1) +
  scale_color_manual(values = c("0" = "#2E86AB", "1" = "#F24C3D")) + # 曲线颜色
  scale_fill_manual(values = c("0" = "#2E86AB33", "1" = "#F24C3D33")) # 置信区间填充色(带透明度)

3. ggsurvfit支持多变量分面

ggsurvfit并非仅支持单变量分面,只要分面变量存在于模型拟合的数据中,就可以使用多变量分面,比如facet_grid()或facet_wrap()结合多个变量:

# 多变量交叉分面示例:行是sex,列是surg
survfit2(Surv(time, status) ~ 1, data = df_colon) %>%
  ggsurvfit() +
  add_confidence_interval() +
  facet_grid(sex ~ surg)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 09:49:54