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