ggsurvplot 和 ggplot 格子?!使用累积发生率函数绘制卡普兰-迈尔曲线
ggsurvplot and ggplot lattice ?! Plotting kaplan-meier curve with cumulative incidence function
我想在一个图中绘制卡普兰迈尔曲线 (KM) 和累积事件或累积发生率函数 (CIF) 作为格子。
我最近从 SAS 切换到 R,在 SAS 中,您可以使用宏一步完成所有操作(参见 this image),但我在 R 中找不到类似的东西。
目前,我 运行 一个代码用于两个单独的图表。第一个使用 ggsurvplot
绘制 survfit
对象,这导致 KM 曲线,而第二个使用 ggplot
在多次转换后绘制 cuminc
对象。 ggcompetingrisks
不是很优化,所以我不使用它。我也有兴趣绘制一个特定的竞争风险,例如癌症死亡,而不是所有的竞争风险。
这是我当前使用 survminer
包中的 BMT 数据帧的代码示例。
library(survminer)
library(cmprsk)
data(BMT)
# I'll add the variable Death to plot overall survival.
BMT <- mutate(BMT, death = ifelse (status == 1, 1, 0))
# KM plot:
figKM <- ggsurvplot(survfit(Surv(ftime, death) ~ dis, BMT))
figKM
# CIF plot:
cif <- cuminc(ftime = BMT$ftime, fstatus = BMT$status, group = BMT$dis, cencode = 0)
cifDT <- cif %>%
list_modify("Tests" = NULL) %>%
map_df(`[`, c("time", "est"), .id = "id") %>%
filter(id %in% c("0 1","1 1")) # to keep the incident I want
figCIF <- ggplot (cifDT, aes(x = time, y = est, color = id)) + geom_step(lwd = 1.2)
figCIF
有没有办法将 figKM 和 figCIF 一起放在格子图中?可以通过不同的方式绘制它们吗?
如果您使用 class
和 str
查看 figKM 对象的内容,您会看到该列表中的第一项是“绘图”,所以这似乎符合您的要求在您的评论中:
library(cowplot)
plot_grid(figKM[[1]], figKM[[1]], nrow = 2)
我不是 tidyverse 用户,所以 map_df
可能是基本函数 Reduce
或 Map
的某种克隆,但我没有足够的经验 a)知道要加载哪个包,或者 b) 有能力弄清楚你的管道表达式正在做什么。注释代码可能更容易理解。我对 survival
包很有经验。
我想在一个图中绘制卡普兰迈尔曲线 (KM) 和累积事件或累积发生率函数 (CIF) 作为格子。
我最近从 SAS 切换到 R,在 SAS 中,您可以使用宏一步完成所有操作(参见 this image),但我在 R 中找不到类似的东西。
目前,我 运行 一个代码用于两个单独的图表。第一个使用 ggsurvplot
绘制 survfit
对象,这导致 KM 曲线,而第二个使用 ggplot
在多次转换后绘制 cuminc
对象。 ggcompetingrisks
不是很优化,所以我不使用它。我也有兴趣绘制一个特定的竞争风险,例如癌症死亡,而不是所有的竞争风险。
这是我当前使用 survminer
包中的 BMT 数据帧的代码示例。
library(survminer)
library(cmprsk)
data(BMT)
# I'll add the variable Death to plot overall survival.
BMT <- mutate(BMT, death = ifelse (status == 1, 1, 0))
# KM plot:
figKM <- ggsurvplot(survfit(Surv(ftime, death) ~ dis, BMT))
figKM
# CIF plot:
cif <- cuminc(ftime = BMT$ftime, fstatus = BMT$status, group = BMT$dis, cencode = 0)
cifDT <- cif %>%
list_modify("Tests" = NULL) %>%
map_df(`[`, c("time", "est"), .id = "id") %>%
filter(id %in% c("0 1","1 1")) # to keep the incident I want
figCIF <- ggplot (cifDT, aes(x = time, y = est, color = id)) + geom_step(lwd = 1.2)
figCIF
有没有办法将 figKM 和 figCIF 一起放在格子图中?可以通过不同的方式绘制它们吗?
如果您使用 class
和 str
查看 figKM 对象的内容,您会看到该列表中的第一项是“绘图”,所以这似乎符合您的要求在您的评论中:
library(cowplot)
plot_grid(figKM[[1]], figKM[[1]], nrow = 2)
我不是 tidyverse 用户,所以 map_df
可能是基本函数 Reduce
或 Map
的某种克隆,但我没有足够的经验 a)知道要加载哪个包,或者 b) 有能力弄清楚你的管道表达式正在做什么。注释代码可能更容易理解。我对 survival
包很有经验。