r - 在R中向ggsurvplot添加一条垂直线
问题描述
我正在尝试在 R 中创建一个漂亮的生存图。是否可以在使用ggsurvplot()函数创建的生存图中添加一条垂直线?我想以这种方式显示时间阈值。
我已经尝试过使用abline( ) 函数,如下面的代码所示。
surv_object <- Surv(time = data1$survive_time)
fit1 <- survfit(surv_object~sex,data = data1)
ggsurvplot(fit1, data = data1, pval = TRUE, xlab="Time [days]", risk.table="percentage",surv.median.line="hv")
abline(v=200)
但是它给了我以下错误:
Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...): plot.new has not been called yet
Traceback:
1. abline(v = 120)
2. int_abline(a = a, b = b, h = h, v = v, untf = untf, ...)
有什么办法可以在生存情节中添加这样一条线?为什么它不被识别为情节?
解决方案
ggsurvplot 是 ggplot2 的扩展,因此如果您要向图中添加任何内容,您需要使用 ggplot 函数以获得最佳结果。唯一令人讨厌的问题是 ggsurvplots 存储为一个包含多个项目的对象(包括 ggplot,称为 plot)。一旦你知道这一点,将垂直线添加到 ggsurvplot 很容易:
yoursurvplot<-ggsurvplot(fit1, data = data1, pval = TRUE, xlab="Time [days]", risk.table="percentage",surv.median.line="hv")
yoursurvplot$plot + geom_vline(xintercept = 200)
当我为我正在比较的两个癌症队列的 5 年生存时间添加一条垂直线时,这对我有用。
推荐阅读
- docker - Docker 的第一次运行——运行 makeitopen.com 的 F8 应用程序
- sql - 仅当外部变量与值匹配时才检查条件
- sql - 如何从 postgres 表中删除重复数据,而只有一两列有重复?
- sas - 过滤日期的公式
- javascript - 如何在 Javascript 中使用 NumberFormat?
- javascript - 验证表单时如何检查特殊字符
- llvm - LLVM IR:获取调用点的返回值
- java - 在没有主应用程序的情况下从 application.properties 获取价值
- java - Spring Boot 在哪里存储其默认的日志记录设置
- sql - DO 块工作正常,但函数循环太多次?