geom_point_interactive проблема при передаче вместе с geom_boxplot
Интересно, можешь ли ты мне помочь?
Я часто использую великолепный 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()
... генерирует:
Тем не менее, когда я пытаюсь использовать 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()
... я получаю следующее:
(Обратите внимание, что я не мог загрузить svg
файл здесь, но может подтвердить, что всплывающие подсказки из geom_point_interactive
работает нормально.) Кроме того, такое же поведение, кажется, произойдет, если я заменю geom_boxplot
с geom_boxplot_interactive
,
Итак... чтобы перейти к моему вопросу: знаете ли вы способ сохранить всплывающие подсказки по точкам, имея при этом коробочный график, который выглядит так, как на первом рисунке выше?
Как всегда, большое спасибо за поиск.
1 ответ
Проблема в том, что 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))