Отсутствует всплывающая подсказка для geom_line_interactive в ggiraph

Я хотел добавить всплывающую подсказку к 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 )

Это приводит к исчезновению всплывающей подсказки.

Что я делаю не так?


person SBista    schedule 17.05.2017    source источник


Ответы (1)


Кажется, что всплывающие подсказки 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, и он работает намного лучше.

введите здесь описание изображения

person Mike Wise    schedule 17.05.2017
comment
Спасибо. Это потрясающе! Кажется, есть какая-то проблема с всплывающей подсказкой при выборе geom_line_interactive. geom_point_interactive кажется идеальным решением! - person SBista; 17.05.2017
comment
Спасибо. Кстати, был бы признателен за голосование (работа над моими значками и баллами за ответы не в счет) - person Mike Wise; 17.05.2017