Я просто новичок в gganimate
, так что это, вероятно, не самый простой способ, а просто взлом. Но это работает. Попробуйте это:
Основная идея c - избавиться от следов тени. Чтобы показать прошлые значения, я использую раздутую df, где obs группируются в кадры, разделяя df по дням, затем накапливают Days to frames, ... Недостаток. Помимо установки df, мы должны сделать несколько дополнительных шагов манипулирования данными, чтобы получить правильные цвета и размеры.
library(tidyverse)
library(gganimate)
df <- airquality %>%
filter(Month == 5) %>%
split(.$Day) %>%
accumulate(~ bind_rows(.x, .y)) %>%
bind_rows(.id = "frame") %>%
mutate(frame = as.integer(frame)) %>%
group_by(frame) %>%
mutate(label = paste("temp:", last(Temp), "\n", "day:", last(Day)),
color = ifelse(Day == last(Day), "red", "black"),
size = ifelse(Day == last(Day), 10, 5)) %>%
ungroup()
ggplot(df) +
labs(title = '{closest_state}') +
geom_point(aes(Day, Temp, color = color, size = size)) +
scale_color_identity() +
scale_size_identity() +
geom_text(aes(label = label), x=20, y=80, size=10)+
transition_states(frame, state_length = 50)
Создано в 2020-03-24 by представительный пакет (v0.3.0)