Создание плавного перехода между двумя гистограммами временных рядов с помощью gganimate - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь создать анимацию с gganimate, которая начинается с данных о преступности за последние 10 лет.Как только анимация начнется, я хотел бы добавить исторические годы, восходящие к 1970 году (когда преступность была намного выше).Это будет выглядеть как «уменьшение масштаба» со свободными осями.До сих пор я могу начать с 2018 года и добавлять годы последовательно в обратном порядке, например:

# Create dataset
dat <- tibble(year = 1970:2018)
dat$crime <- 100 * exp(-0.02*(dat$year-1970))


p <- ggplot(dat, aes(x=year, y = crime)) +
  geom_bar(stat = "identity") +
  transition_states(-year, transition_length = 4, state_length = 2) +
  view_follow() + shadow_mark()

animate(p)

CrimeAnimation

У меня возникают трудности с 10-летним историческимсюжет (вместо одного года), до уменьшения на последние 30-40 лет.Любая помощь будет оценена!

1 Ответ

0 голосов
/ 25 ноября 2018

Используйте пользовательскую переменную state для группировки нужных лет.

1

Данные

dat <- tibble(year = 1970:2018)
dat$crime <- 100 * exp(-0.02*(dat$year-1970))

# state variable called "time" for grouping
dat$time <- c(40:2, rep(1, 10))

Код

p <- ggplot(dat, aes(x = year, y = crime)) +
    geom_col() +
    # states depend on "time", not "year"
    transition_states(time, transition_length = 4, state_length = 2) +
    view_follow() + shadow_mark()

animate(p)

PS: Это был действительно лаконичный, хорошо отформатированный и воспроизводимый первый вопрос!Так держать!

...