查看原文
其他

一行代码在生存曲线中添加子图

段湘杰 R语言统计与绘图 2023-05-09

今天推荐一个不错的绘制生存曲线的R包——ggsurvfit包,这个包最大的优点就是基于ggplot2语法来绘制生存曲线,相比survminer包的ggsurvplot()函数,ggsurvfit包的可定制化程度更高,而且绘制起来更加简单,强力推荐

特别是组合不同的生存曲线图形,极其方便。

今天主要学习下这个图形,怎么在主图上面添加一个子图。

下面来学习下。

1. 加载数据

使用survival包的lung数据集,数据集包括了NCCTG晚期肺癌患者的生存率。

运行以下代码加载数据:

library(survival)  # 加载包
head(lung)         # 预览数据

2. 拟合曲线

使用survfit2()函数来拟合曲线。

library(ggsurvfit)
fit <- survfit2(Surv(time, status) ~ sex, data = lung)
fit # 可输出部分信息

3. 简单生存曲线

将拟合模型转化为整洁数据框,然后提取其中的数据使用ggplot2包进行绘图。

ggsurvfit包将绘图代码打包成了一个函数——ggsurvfit()函数,使用ggsurvfit()函数可以轻松绘制生存曲线。

fit %>%
ggsurvfit()

4. 生存曲线排版

可以在主图上面添加子图。

p1 <- survfit(Surv(time, status) ~ sex, data = lung) %>% 
  ggsurvfit(linewidth = 0.8) +
  add_confidence_interval() +
  theme_bw(base_size = 12) +
  theme(legend.position=c(0.7,0.8)) +
  ggsci::scale_fill_nejm()

p4 <- survfit(Surv(time, status) ~ sex, data = lung) %>% 
  ggsurvfit(linewidth = 0.8, type = "cumhaz") +
  add_confidence_interval() +
  theme_bw(base_size = 10) +
  theme(legend.position='none') +
  ggsci::scale_fill_nejm()

绘制很简单,一行代码即可搞定。

library(patchwork)
p1 + 
  inset_element(p4, 
                left = 0.5, bottom = 0.5, right = 0.99, top = 0.99)

参考资料

1.ggsurvfit包帮助文件。

《完》


关注下方公众号,分享更多更好玩的R语言知识。

点个在看,SCI马上发表。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存