更改 facet_wrap 生存曲线的图表标题

Changing facet_wrap Graph Titles for Survival Curves

我目前需要为一篇研究论文格式化 5 条生存曲线。我的生存函数的代码如下。

all<-survfit(Surv(MD,Censor)~DepTyp,data=add,conf.type='log-log')

根据上面的代码,我生成了 5 条生存曲线,我想使用 ggplot 的 facet_wrap 来构造它们。我的代码ggplot代码是:

sg<-summary(all) 
ggplot()+geom_line(all,mapping=aes(x=time,y=surv))+facet_wrap(sg$strata,ncol=2)

其中 sg 是每条生存曲线的摘要。我的问题是试图改变多面生存曲线的标题。目前,每条曲线的标题都像 "Title=A"。我想将每个标题更改为正式名称,即"Female"。我使用了贴标机功能,但运气不佳,我假设它是因为分层的方式。我可以使用 ggsurvplot 函数,但我喜欢 facet 的外观,我只需要更改标题即可。无论如何我可以做到这一点还是我需要使用不同的绘图包?

一种方法是使用 labeller 修改分面标签文本。另一种方法是修改数据以更改 strata 变量的标签。 由于我没有您的生存数据,因此我使用来自 chestdiab_df 数据作为示例:

library(survival)
library(ggplot2)
library(chest)  # example data diab_df
# Fit model 
all <- survfit(Surv(t0, t1,Endpoint) ~ Sex, 
             data =diab_df,conf.type='log-log')
all <- broom::tidy(all)

# Original plot
ggplot(data = all, aes(x = time, y = estimate))+
  geom_line()+ 
facet_wrap(.~strata)


# Solution 1: 
stratalabs <- c("Male", "Female")
names(stratalabs) <- c("Sex=1", "Sex=2")
ggplot(data = all, aes(x = time, y = estimate))+
  geom_line()+ 
  facet_wrap( .~ strata, labeller = labeller(strata = stratalabs))


# Solution 2: 
all$strata = factor(all$strata, levels = c("Sex=1", "Sex=2"), 
                   labels = c("Male", "Female"))
ggplot(data = all, aes(x = time, y = estimate))+
  geom_line() + 
  facet_wrap( .~ strata)

reprex package (v0.3.0)

于 2020-01-01 创建