Всплывающая подсказка отсутствует для 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 )
Это заставляет всплывающую подсказку исчезать.
Что я делаю неправильно?
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, и это работает намного лучше.