如何使用ggsurvfit在KM图和颜色代码组中添加风险表?[关闭]

hxzsmxv2  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

**已关闭。**此问题正在寻求书籍,工具,软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答案。

我们不允许您提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便您可以通过事实和引用来回答问题。
10天前关闭。
Improve this question
我找不到语法来添加风险表内的KM图和颜色代码组一样SAS做.我知道该软件包是最近发布的,所以我不知道是否有任何语法.
我遵循指南[https://www.danieldsjoberg.com/ggsurvfit/reference/add_risktable.html]使用ggsurvfit生成KM图。

oyt4ldly

oyt4ldly1#

帮助页面上的示例相当清晰。下面是一个带有风险表的颜色编码KM的示例,使用ggsurvfit包附带的df_lung数据框:

library(ggsurvfit)

survfit2(Surv(time, status) ~ sex, data = df_lung) %>%
  ggsurvfit() +
  scale_ggsurvfit(x_scales = list(breaks = seq(0, 30, by = 6))) +
  add_risktable()

字符串


的数据

编辑

如果您正在寻找更定制的东西,将风险表作为主面板的一部分,您可以直接将文本放在其中,但它需要一些预先计算:

library(ggsurvfit)
library(tidyverse)

survdat <- ggsurvfit(survfit2(Surv(time, status) ~ sex, data = df_lung))$data

risk_table <- survdat %>% 
  group_by(strata) %>% 
  filter(c(TRUE, diff(n.risk) != 0)) %>%
  mutate(timecut = cut(time, breaks = c(-Inf, 0, 6, 12, 18, 24, 30), 
                       include.lowest = FALSE)) %>%
  group_by(strata, timecut) %>%
  slice_max(time, n = 1) %>%
  filter(time < 30) %>%
  ungroup() %>%
  mutate(time = seq(0, 30, 6), .by = 'strata')


现在的情节是:

ggplot(survdat, aes(time, estimate, color = strata)) +
  geom_hline(yintercept = 0:4 * 0.25, color = 'gray', linewidth = 0.25) +
  geom_segment(inherit.aes = FALSE, data = data.frame(x = seq(0, 30, 6)),
               color = 'gray', linewidth = 0.25,
               aes(x = x, xend = x, y = 0, yend = Inf)) +
  geom_step() +
  geom_text(aes(y = as.numeric(strata)*-0.1, label = n.risk),
            show.legend = FALSE, data = risk_table) +
  geom_hline(yintercept = 0) +
  scale_y_continuous('Survival Probability',
                     breaks = c(-0.1, -0.2, 0:4 * 0.25), 
                     labels = ~ c(paste('n at risk', 
                                  levels(survdat$strata)[.x[.x < 0] * -10]),
                                  scales::percent(.x[.x >= 0]))) +
  scale_x_continuous('Time (months)', breaks = seq(0, 30, 6)) +
  scale_color_manual(NULL, values = c('blue3', 'red4')) +
  theme_bw(base_size = 16) +
  theme(legend.position = 'bottom',
        panel.grid = element_blank())


相关问题