使用gganimate在两个时间序列条形图之间创建平滑过渡

时间:2018-11-24 16:49:33

标签: r ggplot2 gganimate

我正尝试用从过去十年犯罪数据开始的具有gganimate的动画制作。动画一旦开始,我想补充一下追溯到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

在扩展到过去30-40年之前,我很难从10年的历史情节(而不是仅仅一年)开始。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

使用自定义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:这是一个非常简洁,格式合理且可复制的第一个问题!继续努力!