在gganimate中以不同的速度显示不同的时间元素

时间:2019-06-02 03:12:54

标签: r animation ggplot2 plot gganimate

使用How to make dots in gganimate appear and not transition答案中的代码作为MWE,说我们有这个gganimate:

library(ggplot2)
library(gganimate)
a <- ggplot(airquality, aes(Day, Temp, 
                            group = interaction(Month, Day))) +
  geom_point(color = 'red', size = 1) +
  transition_time(Month) +
  shadow_mark(colour = 'black', size = 0.75) +
  enter_fade()  # I liked the look of this, but fine to leave out
animate(a, nframes = 100)

animate(a, fps=5)

是否可以控制每个月(时间要素)的速度?例如,非常快地显示第5个月,...,非常慢地显示第9个月。

1 个答案:

答案 0 :(得分:3)

这是我的基本尝试,方法是创建一个帮助程序列,该列可以用作我们的transition_time,以显示我们可以如何使用不同的时间步长和所需的标签。

稍后,您可以花费更多时间来制作更好的* timestep列,这些列将更加复杂并完全满足您的需求。

这里的主要思想/观点是,我们可以使用frame_time上的函数来获取所需的标签,同时可以操纵transition_time

library(ggplot2)
library(gganimate)
library(dplyr)

g <- airquality %>%
  group_by(Month) %>%
  mutate(timestep = if_else(Month==5, ((1:n())-1)/2 + Month, 15 + Month)) %>%
  ggplot(aes(Day, Temp, group = interaction(Month, Day))) +
  geom_point(color = 'red', size = 1) +
  transition_time(timestep) +
  shadow_mark(colour = 'black', size = 0.75) +
  enter_fade() +
  labs(title = 'Month: {if_else(frame_time<21,5, ceiling(frame_time-15))}')

animate(g, nframes = 100)

reprex package(v0.3.0)于2019-06-02创建