geom_point_interactive проблема при передаче вместе с geom_boxplot - PullRequest
0 голосов
/ 13 февраля 2019

Интересно, можешь ли ты мне помочь?

Я часто использую splendid ggiraph, но недавно столкнулся с проблемой, из-за которой он не работает, когда один из его интерактивных гемов соединен с другим гемом (либо из ggiraph, либо ggplot2).Позвольте мне объяснить с моим примером ниже и начать с данных.

library(ggiraph)
library(tidyverse)
dput(data)

structure(list(moniker = c("OU", "IN", "AI", "HR", "T ", "LA", 
"AJ", "WC", "BE", "NV"), monthly = c(-0.03489, -0.028034, -0.0374, 
-0.0479, -0.032485, -0.0332, -0.045954, -0.048032, -0.0446, -0.027724
), quarterly = c(-0.096452525515629, -0.0642786819909756, -0.12256466734, 
-0.112914230016, -0.121439751549064, -0.12779609, -0.103490246054841, 
-0.152770470354658, -0.12167068725, -0.0993823354535133), yearly = c(-0.107231010977261, 
-0.00722368758143395, -0.088470240158463, -0.0817767947388421, 
-0.136265993838053, -0.0970216743424386, -0.092159717986092, 
-0.174532024103611, -0.131514750319878, -0.0866996056676958)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -10L))

Другими словами, данные выглядят так:

glimpse(data)

Observations: 10
Variables: 4
$ moniker   <chr> "OU", "IN", "AI", "HR", "T ", "LA", "AJ", "WC", "BE", "NV"
$ monthly   <dbl> -0.034890, -0.028034, -0.037400, -0.047900, -0.032485, -0...
$ quarterly <dbl> -0.09645253, -0.06427868, -0.12256467, -0.11291423, -0.12...
$ yearly    <dbl> -0.107231011, -0.007223688, -0.088470240, -0.081776795, -...

Когда я делаю вещи условно, все работает нормально:

data %>% 
  gather(key = "timeframe", value = "return", -moniker) %>% 
  mutate(timeframe = as_factor(timeframe)) %>% 
  ggplot(
    aes(
      x = timeframe, 
      y = return
      )
    ) + 
  geom_hline(yintercept = 0) + 
  geom_point(position = position_jitter(w = 0.15, h = 0)) + 
  geom_boxplot()

... генерирует:

enter image description here

Однако, когда я пытаюсь использовать geom_point_interactive вместо geom_point:

data %>% 
  gather(key = "timeframe", value = "return", -moniker) %>% 
  mutate(timeframe = as_factor(timeframe)) %>% 
  ggplot(
    aes(
      x = timeframe, 
      y = return,
      tooltip = moniker
      )
    ) + 
  geom_hline(yintercept = 0) + 
  geom_point_interactive(position = position_jitter(w = 0.15, h = 0)) + 
  geom_boxplot()

... Я получаю следующее:

enter image description here (Обратите внимание, что я не мог загрузить файл svg здесь, номожет подтвердить, что всплывающие подсказки из geom_point_interactive работают нормально. Кроме того, похоже, что то же самое происходит, если я заменим geom_boxplot на geom_boxplot_interactive.

Итак ... чтобы перейти к моему вопросу: Знаете ли вы, как сохранить всплывающие подсказки на точках, имея при этом коробочную диаграмму, которая выглядит так, как на первой картинке выше?

Как всегда, большое спасибо за просмотр.

1 Ответ

0 голосов
/ 13 февраля 2019

Проблема в том, что geom_boxplot наследуется tooltip = moniker, что означает, что каждый moniker получит свою собственную коробку, чтобы избежать этого перемещения tooltip эстетика к geom_point_interactive, например, так:

my_data %>% 
  gather(key = "timeframe", value = "return", -moniker) %>% 
  mutate(timeframe = as_factor(timeframe)) %>% 
  ggplot(
    aes(
      x = timeframe, 
      y = return
    )
  ) + 
  geom_hline(yintercept = 0) + 
  geom_boxplot() + 
  geom_point_interactive(aes(tooltip = moniker), 
                         position = position_jitter(w = 0.15, h = 0))
...