Невозможно реализовать ggplotly на графике с помощью annotation_custom - PullRequest
0 голосов
/ 15 февраля 2019

Я строю набор данных о местах съемки на катке.Я хочу использовать plotly, чтобы пользователи могли видеть окно описания, когда они наводили курсор на каждую точку.Я думал, что это будет сделано с помощью пользовательской подсказки

Каток хранится в объекте rink.

rink <- rasterGrob(readJPEG("full-rink.jpg"))

Вот full-rink.jpg enter image description here

Это первые 5 строк набора данных, с которыми я работаю:

structure(list(game_date = structure(c(17674, 17674, 17674, 17674, 
17674), class = "Date"), event_team = c("WSH", "WSH", "T.B", 
"T.B", "T.B"), event_description = c("WSH #8 OVECHKIN(12), Slap, Off. Zone, 53 ft.Assists: #92 KUZNETSOV(13); #43 WILSON(8) Expected Goal Prob: 1.6%", 
"WSH ONGOAL - #92 KUZNETSOV, Wrist, Off. Zone, 13 ft. Expected Goal Prob: 50.4%", 
"T.B ONGOAL - #17 KILLORN, Backhand, Off. Zone, 18 ft. Expected Goal Prob: 4.5%", 
"T.B ONGOAL - #17 KILLORN, Wrist, Off. Zone, 23 ft. Expected Goal Prob: 4.6%", 
"T.B ONGOAL - #27 MCDONAGH, Slap, Off. Zone, 57 ft. Expected Goal Prob: 1.2%"
), event_type = c("GOAL", "SHOT", "SHOT", "SHOT", "SHOT"), home_team = c("T.B", 
"T.B", "T.B", "T.B", "T.B"), away_team = c("WSH", "WSH", "WSH", 
"WSH", "WSH"), coords_x = c(-42, -80.3, 71, 67, 34), coords_y = c(-21, 
12, -3, 9, 19)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-5L))

Вот код для моего графика:

example_data %>%
ggplot(aes(coords_x, coords_y, text = event_description)) +
  annotation_custom(rink, -100, 100, -45, 45) +
  geom_point(aes(color = event_team), size = 3, show.legend = FALSE) +
  coord_fixed() +
  xlim(-100, 100) +
  ylim(-45, 45) +
  theme_nothing() +
  theme(text = element_text(size = 15),
        plot.title = element_text(hjust = 0.5)) +
  ggtitle(paste0(game_date, "\n", away_team, " vs ", home_team)) +
  scale_color_manual(values = c("#000000", "slategrey"))

К сожалению, как только я запускаю

ggplotly(pbp_plotly_processed), я получаю сообщение об ошибке:

Warning message:
In geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]) :
  geom_GeomCustomAnn() has yet to be implemented in plotly.`

Не думайте, что это возможно в plotly.Есть ли способ, который кто-нибудь может предложить?

Спасибо!

1 Ответ

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

Хорошее решение состоит в том, чтобы построить свой участок, используя непосредственно график:

library(plotly)

example_data %>%
plot_ly(x = ~coords_x, y=~coords_y, 
        text=~paste("Event team:", event_team, "<br>Event type:", event_type))  %>% 
add_markers(marker=list(size=20)) %>%
layout(
xaxis = list(range = c(-100,100)), 
yaxis = list(range = c(-45,45)),
images= list(
    list(
         source= "https://i.imgur.com/Y2kOUX5.png",
         xref= "paper",
         yref= "paper",
         x= 0,
         y= 1,
         sizex= 1,
         sizey= 1,
         opacity= 0.8,
         layer = "below")
       )
)

Предупреждение.Изображение, загруженное по ссылке https://i.imgur.com/Y2kOUX5.png, является исходным изображением после удаления белых полей.

enter image description here

...