如何从 contsurvplot 包中叠加两个 ggplot2 对象?

问题描述 投票:0回答:1

我有两个地块,它们是从

plot_surv_at_t
包中的
constsurvplot
生成的。一个是观察 5 年无复发生存率与肿瘤大小的关系。另一个是癌症特异性存活率与肿瘤大小的关系。

model1 <- coxph(Surv(Time_To_Recurrence,Recurrence) ~ Tumor_Size, data = data, x=TRUE)
model2 <- coxph(Surv(CSS,Cancer_Death) ~ Tumor_Size, data = data, x=TRUE)

plot_surv_at_t(time = "Time_To_Recurrence",
               status = "Recurrence", 
               variable = "Tumor_Size",
               data = data1, 
               model = model1, 
               t=60)

plot_surv_at_t(time = "CSS",
               status = "Cancer_Death", 
               variable = "Tumor_Size",
               data = data1, 
               model = model2, 
               t=60)

每个单独的图看起来都很棒,但我想在同一图中显示大小对无复发和癌症特异性生存的影响。我已经尝试过

patchwork
包并且能够让它们彼此相邻,但我无法将它们放在一起。

谢谢

r ggplot2 survival-analysis
1个回答
1
投票

一个可能的选择是从第二个 ggplot2 对象中提取数据并将其添加到第一个 ggplot2 对象中,例如

library(survival)
library(survminer)
#> Loading required package: ggplot2
#> Loading required package: ggpubr
#> 
#> Attaching package: 'survminer'
#> The following object is masked from 'package:survival':
#> 
#>     myeloma
#options(timeout = 6000)
#install.packages("contsurvplot", dependencies = TRUE)
library(contsurvplot)

fit <- coxph(Surv(time, status) ~ age, data = lung, x = TRUE)
plot1 <- plot_surv_at_t(time = "time",
               status = "status", 
               variable = "age",
               data = lung, 
               model = fit, 
               t=60)

plot1


lung2 <- lung %>%
  mutate(CSS = sample(1:1000, 228))
fit2 <- coxph(Surv(CSS, status) ~ age, data = lung2, x = TRUE)
plot2 <- plot_surv_at_t(time = "CSS",
                        status = "status", 
                        variable = "age",
                        data = lung2, 
                        model = fit2,
                        t=60)
plot2


plot1 +
  geom_line(data = plot2$data,
            aes(x = cont, y = est),
            color = "red")

创建于 2023-03-19 与 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.