0

我正在尝试将工具提示添加到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

我该如何解决这个错误?

4

1 回答 1

1

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

解决方法是在将数据发送到 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)
于 2017-04-29T13:17:23.597 回答