У меня есть data.frame, содержащий метки времени разных типов, геолокации.Я знаю, как построить анимацию каждого события как точку, час за часом, с помощью gganimate
(*).Это будет что-то вроде:
df = data.frame("id" = runif(500, 1e6, 1e7),
'lat' = runif(500, 45, 45.1),
'long'= runif(500, 45, 45.1),
'datetime'= seq.POSIXt(from=Sys.time(), to=Sys.time()+1e5, length.out=500),
'hour'=format(seq.POSIXt(from=Sys.time(), to=Sys.time()+1e5, length.out=500), "%H"),
'event'=paste0("type", rpois(500, 1)))
ggplot(data=df) +
aes(x=long, y=lat, color=factor(event)) +
geom_point() +
transition_states(hour, state_length = 1, transition_length = 0)
Теперь я бы хотел, чтобы точки «оставались» на экране дольше, например, если событие происходит в 17:00, я хочу, чтобы оно отображалось на анимации с2 вечера до 8 вечера (3 кадра до и после его позиции, и, если возможно, исчезать и исчезать).Я не знаю, как это сделать с gganimate, я пытался использовать transition_length
, но это заставляет точки «двигаться», и это не имеет смысла для меня!
Спасибо,
(*) Редактировать : Я думал о добавлении 6 дублированных строк для каждой строки и изменении часа на -1 - +3, но он намного тяжелее и не может справиться с постепенным исчезновением
library(magrittr)
df %<>% mutate(hour = hour + 2) %>% bind_rows(df)
df %<>% mutate(hour = hour + 1) %>% bind_rows(df)
df %<>% mutate(hour = hour - 4) %>% bind_rows(df)
df %<>% mutate(hour = hour %% 24 )