使用 ggsurvplot 将工具提示添加到 ggsurvplot 时出错

Error while adding tooltip to ggsurvplot using ggsurvplot

我正在尝试将工具提示添加到 ggsurvplot。我正在使用 ggiraph 来显示情节。我在下面添加了一个我正在尝试做的最小示例。如果我不在 ggsurvplot 中添加任何 xlim,我的代码似乎可以工作。以下是有效的代码:

library(survminer)
library(survival)
library(ggiraph)

fit<- survfit(Surv(time, status) ~ sex, data = lung )
g <- ggsurvplot(fit, data = lung)   
tooltip <- paste0("Time:", g$plot$data$time, "<br/>", "Survival Prob:", g$plot$data$surv)
x <- g$plot+geom_point_interactive(aes(tooltip = tooltip))
ggiraph(print(x), zoom_max = 5)

现在我想限制 x 轴值,所以我将参数 xlim = c(0, 800) 添加到 ggsurvplot,如下所示:

library(survminer)
library(survival)
library(ggiraph)

fit<- survfit(Surv(time, status) ~ sex, data = lung )
g <- ggsurvplot(fit, data = lung, xlim = c(0,800))  
tooltip <- paste0("Time:", g$plot$data$time, "<br/>", "Survival Prob:", g$plot$data$surv)
x <- g$plot+geom_point_interactive(aes(tooltip = tooltip))
ggiraph(print(x), zoom_max = 5)

这给了我以下错误:

Error: length(ids) == length(str) is not TRUE

我该如何解决这个错误?

这是 ggiraph 的问题。添加一个xlim是触发clipping,有些点不会被绘制,但是tooltip变量没有clipped;我会尝试解决这个问题。

解决方法是在将数据发送到 geom_point_interactive 之前过滤数据:

library(survminer)
library(survival)
library(ggiraph)


fit<- survfit(Surv(time, status) ~ sex, data = lung )
g <- ggsurvplot(fit, data = lung, xlim = c(0,800))  

data_ <- g$plot$data
data_ <- base::transform(data_, tooltip = sprintf("Time: %.0f<br/>Survival Prob: %.3f", time, surv) )
data_ <- data_[data_$time < 800, ]

x <- g$plot + geom_point_interactive(data = data_, aes(time, surv, tooltip = tooltip))
ggiraph(print(x), zoom_max = 5)