Я создаю хоккейное приложение, которое имеет сгенерированную gganimate
анимацию, как показано ниже:
Здесь имеет отношение UI:
## UI----
ui <- fluidPage(
titlePanel(tagList(
img(src = "nhl-logo.png", height = 60, width = 60),
"PLAY-BY-PLAY"),
windowTitle = "NHL Play-by-Play"),
hr(),
fluidRow(
column(7,
imageOutput("anim")
),
column(5,
DT::dataTableOutput("game_id_table"))
),
И сервер:
anim_test <- pbp_processed() %>%
mutate(event_frame = seq_along(event_index)) %>%
ungroup() %>%
ggplot(aes(coords_x, coords_y, group = event_index)) +
annotation_custom(rink, -100, 100, -45, 45) +
annotation_raster(away_team_logo_alpha, ymin = -20, ymax = 18, xmin = -62, xmax = -25) +
annotation_raster(home_team_logo_alpha, ymin = -20, ymax = 18, xmin = 27, xmax = 65) +
geom_point(size = input$puck_size, color = "darkblue") +
coord_fixed() +
xlim(-100, 100) +
ylim(-45, 45) +
theme_nothing() +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
ggtitle(paste0(away_team, " vs ", home_team, "\n", game_date),
subtitle = "Frame: {frame} / {nframes}") +
labs(caption = "Rink: WAR On Ice\nData: Corsica Hockey") +
transition_components(time=event_frame) +
shadow_null() +
NULL
anim_save("outfile.gif", animate(anim_test, fps = input$anim_speed)) # New
# Return a list containing the filename
list(src = "outfile.gif",
contentType = 'image/gif',
width = "600px",
height = "400px"
# alt = "This is alternate text"
)
pbp_processed
- это набор данных, используемый для создания этой анимации.Вот rink
:
В основном, я anim_save
анимация как .gif
, а затем возвращает список, содержащий имя файла (outfile.gif
)
Я не уверен, почему вокруг катка так много белого пространства (анимация), как видно из этого файла изображения катка в этом приложении ...