如何在 R 中的累积发生率图上绘制中线,并包括风险表/累积事件表?

问题描述 投票:0回答:1

这是我想要执行的代码的可重复示例:

library(survival)
library(survminer)

km.fit <- survfit(Surv(rfstime, status) ~ 1, data = gbsg)

ggsurvplot(km.fit, fun = function(x) 1-x, data = gbsg, censor = FALSE, conf.int = TRUE,
           risk.table = TRUE, cumevents = TRUE, ylab = "Cumulative Incidence", 
           surv.median.line = "hv")

此代码不起作用,并给出以下错误消息:

Error in match(x, table, nomatch = 0L) : 
  'match' requires vector arguments

我想要的是以下代码产生的结果,但添加了中线:

ggsurvplot(km.fit, fun = function(x) 1-x, data = gbsg, censor = FALSE, conf.int = TRUE, 
           risk.table = TRUE, cumevents = TRUE, ylab = "Cumulative Incidence")

我发现我收到了前面提到的错误,因为调用函数时

surv.median.line
不起作用。但是,我确实需要将其绘制为累积发生率,而不是生存率,因此该函数是必要的。

推荐的解决方法是尝试在 ggplot 中手动绘制中线,一旦我将此 ggplot 对象保存到变量并按以下方式调用它,我就可以这样做:

myplot <- ggsurvplot(km.fit, fun = function(x) 1-x, data = gbsg, censor = FALSE, conf.int = TRUE,
           risk.table = TRUE, cumevents = TRUE, ylab = "Cumulative Incidence")

myplot$plot + 
  geom_segment(aes(x = 0, xend = 1810, y = 0.5, yend = 0.5), linetype = "dashed") +
  geom_segment(aes(x = 1810, xend = 1810, y = 0, yend = 0.5), linetype = "dashed")

但是,现在的问题是我看不到风险表和累积发生率表了;我只有情节。我确实需要这些表格,如果我必须将它们打印出来并以某种方式单独管理它们,则会带来很多困难。

有什么建议吗?如何将我想要的所有内容(累积发生率图、中线和表格)全部集中在一个图中?这可能吗,还是我运气不好?

r ggplot2 survival-analysis
1个回答
0
投票

问题是您操纵了绘图,但没有将其分配回

ggsurvplot
对象,即执行
myplot$plot <- myplot$plot + ...
。然后打印
myplot
以获得得出风险表的生存曲线图:

library(survival)
library(survminer)

km.fit <- survfit(Surv(rfstime, status) ~ 1, data = gbsg)

myplot <- ggsurvplot(km.fit,
  fun = function(x) 1 - x, data = gbsg, censor = FALSE, conf.int = TRUE,
  risk.table = TRUE, cumevents = TRUE, ylab = "Cumulative Incidence"
)

myplot$plot <- myplot$plot +
  geom_segment(aes(x = 0, xend = 1810, y = 0.5, yend = 0.5), linetype = "dashed") +
  geom_segment(aes(x = 1810, xend = 1810, y = 0, yend = 0.5), linetype = "dashed")

myplot

© www.soinside.com 2019 - 2024. All rights reserved.