1

我想将工具提示添加到ggsurvplot. 我ggiraph用来显示情节。由于ggiraph没有geom_step_interactive,我正在操作我的数据输出ggsurvplot以获取阶跃函数值并使用geom_line_interactive在我的 ggsurvplot 上覆盖一条线并添加一个工具提示。这是正常工作的代码:

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

  #Function to get the step function points
  step_func <- function(data, direction="hv", x , y) {
    direction <- match.arg(direction, c("hv", "vh"))
    data <- as.data.frame(data)[order(data[, x]), ]
    n <- nrow(data)

    if (n <= 1) {
      # Need at least one observation
      return(data[0, , drop = FALSE])
    }

    if (direction == "vh") {
      xs <- rep(1:n, each = 2)[-2*n]
      ys <- c(1, rep(2:n, each = 2))
    } else {
      ys <- rep(1:n, each = 2)[-2*n]
      xs <- c(1, rep(2:n, each = 2))
    }

    return(data.frame(
      x = data[,x][xs],
      y = data[,y][ys],
      data[xs, setdiff(names(data), c(x, y))]
    ))
  }



  fit<- survfit(Surv(time, status) ~ sex, data = lung )
  g <- ggsurvplot(fit, data = lung, risk.table = TRUE,
                  risk.table.pos= "out", risk.table.y.text = TRUE)

  dat1 <- plyr::ddply(g$plot$data, "strata", step_func, "hv", "time", "surv")
  dat1$tooltip <- paste0("Time:", dat1$x)
  gg<- g$plot+geom_line_interactive(data = dat1, aes(x= x, y=y, colour = strata, tooltip= tooltip ), size = .75)
  ggiraph(code = print(gg))

使用上面的代码,我得到以下带有工具提示的图,如图所示:在此处输入图像描述

我希望工具提示不仅显示时间,还显示生存概率,为此我将代码稍微更改如下:

dat1$tooltip <- paste0("Time:", dat1$x, "Surv:", dat1$y )

这会导致工具提示消失。

我究竟做错了什么?

4

1 回答 1

3

geom_line_interactive当工具提示太长时,它们似乎消失了。您可以截断值结果以使其简短。以下作品:

dat1$tooltip <- paste0("Time:", dat1$x, " Surv:", round(dat1$y,2) )

但是将值设置为 3 会导致它们消失。我不完全确定这一点,因为工具提示非常繁琐,似乎只在鼠标位于正确位置时才会出现。可能是超过一定长度的所有这些都被抑制了。

geom_point_interactive但是,我确实注意到,如果您使用更大的参数值来代替geom_line_interactve和使用更大的size参数值,则整个工具提示的效果会更好。这可能就是你想要做的。

可能geom_line_interactive是忽略了size参数。

这个图是用geom_point_interactive的,round上面的参数设置为3,size设置为1.75,效果好很多。

在此处输入图像描述

于 2017-05-17T07:50:24.160 回答