2

我想创建一条具有 95%-CI 的 KM 曲线,其中 x 轴放大以显示 0-60 个月之间的值。在我使用 xlim 之前,这一切都适用于 ggsurvplot。

ggsurvplot(fitLC, data = KMSCC,
       risk.table = TRUE,
       conf.int=TRUE, 
       pval = TRUE, 
       break.x.by = 12, 
       xlab ="Time in Months",
       ylab="Relative Survival",
       ggtheme = theme_minimal(),
       risk.table.y.text.col = T,
       risk.table.y.text = FALSE)

无限制

ggsurvplot(fitLC, data = KMSCC,
           risk.table = TRUE,
           conf.int=TRUE, 
           pval = TRUE, 
           break.x.by = 12, 
           xlab ="Time in Months", 
           xlim = c(0, 60),
           ylab="Relative Survival",
           ggtheme = theme_minimal(),
           risk.table.y.text.col = T,
           risk.table.y.text = FALSE)

有限制

最后,有没有办法在不将较高的 x 轴值更改为 NA 的情况下放大到首选的 x 轴值?另请参阅:https ://github.com/kassambara/survminer/issues/4 如何将 xlim 模式更改为笛卡尔坐标?

我不能给出图中看到的数据,但为了重现性,这里有一个 Google sheet 中的示例数据集

4

1 回答 1

1

当您使用ggsurvplot-argumentxlim+ coord_cartesian(...)之后放大 surv_graph 的绘图时,表格会自动调整为仅显示绘图中的数据。这可能值得对软件包提出更改请求。同时,下面的代码可能是一种解决方法。

ggsurvplot()创建一个包含 4 个列表的对象:其中一个包含图形,另一个包含表格。提取那些 2 并“排列”它们ggarrange()可能会创建一个合适的图表。在 ggarrange 操作之前,我们使用以下命令“放大”surv-plot coord_cartestion(xlim= ...)

### download file from link provided by OP 
### and save it in sink with the code below
lung <- read.csv(file = "../Tdebeus_001.csv", header = TRUE)

library("survival")
library("survminer")
library("ggpubr")       # for ggarrange
    
fitLC  <- survfit(Surv(Time_months, Event) ~ Cohort, data = lung)
    
p1 <- ggsurvplot(fitLC
                 , data = lung
                 , risk.table = TRUE
                 , conf.int=TRUE
                 , pval = TRUE
                 , break.x.by = 12
                 , xlab ="Time in Months"
                 # , xlim = c(0, 60)        ## commented out !
                 , ylab="Relative Survival"
                 , ggtheme = theme_minimal()
                 , risk.table.y.text.col = T
                 , risk.table.y.text = FALSE
                 )

### save parts of the original graph    
surv_plot <- p1$plot
surv_table <- p1$table

### zoom in on the surv_plot    
surv_plot2 <- surv_plot + coord_cartesian(xlim = c(0,60))

### put it back together
ggarrange(surv_plot2, surv_table, ncol = 1, heights = c(3, 1))

这会产生下图,可以使用其他参数对ggarrange(): 进行微调(在上面的代码中,heights将 3/4 的图提供给 surv_plot)。

在此处输入图像描述

请让我知道这是否是您的想法。

于 2021-10-29T14:19:15.263 回答