Полностью зависая на плитках на фоне облака точек - как показать подсказку? - PullRequest
2 голосов
/ 30 мая 2019

Я конвертирую график ggplot2 в сюжет. Сюжет состоит из слоя листов (на заднем плане) и точечного слоя (на переднем плане). Я хотел бы иметь всплывающие подсказки при наведении на плитки.

Код ниже в основном дает мне то, что я ищу. При наведении курсора на плитки в зонах «без точек» появляется нужная подсказка. Однако при наведении курсора на области с высокой плотностью точек всплывающие подсказки не отображаются.

Я думал, что игра с параметром layerData в вызове ggplotly может помочь, но это не так.

library(ggplot2)
library(dplyr)
library(plotly)

set.seed(1)
dat_points <- data.frame(x = rnorm(100), y = rnorm(100))
dat_tiles <- expand.grid(tx = -3:3, ty = -3:3)
dat_tiles$val <- rnorm(nrow(dat_tiles))
dat_tiles$label <- sample(LETTERS[1:5], nrow(dat_tiles), replace = T)

p <- ggplot() +
  geom_tile(data = dat_tiles, aes(x = tx, y = ty, fill = val, text = label)) +
  geom_point(data = dat_points, aes(x = x, y = y), alpha = .5)

gg <- ggplotly(p, tooltip = "text")
gg

Мне бы хотелось, чтобы при наведении курсора на области с высокой плотностью (например, 0, 0) всплывающие подсказки появлялись с той же скоростью, что и в областях с низкой плотностью.

РЕДАКТИРОВАТЬ: добавлено статическое изображение сюжета.

static version of the plot

1 Ответ

2 голосов
/ 30 мая 2019

Вы можете переключать порядок своих слоев в p, и из-за того, как ggplotly() конструирует из объекта ggplot, вы получаете идентичный вид графика, но с желаемым поведением всплывающей подсказки!

p <- ggplot() +
  geom_point(data = dat_points, aes(x = x, y = y), alpha = 1) +
  geom_tile(data = dat_tiles, aes(x = tx, y = ty, fill = val, text = label))
p # this looks bad

gg <- ggplotly(p, tooltip = "text")
gg # but this looks good!
...