加速 gganimate 中的转换
Accelerating transitions in gganimate
我有一个有几百行的情节。我希望这些线条随着时间的推移出现;首先慢慢地,有时间向观众解释发生了什么事;然后越来越快。
下面的最小示例给出了动画当前外观的示例。我想要的是第一帧有几秒钟,第二帧大约是一半,第三帧是一半,等等。本质上,持续时间应该呈指数级变短。
但是,我不知道如何更改持续时间。我认为选项 ease_aes()
应该这样做,因为它允许 exponential_in
等函数。尽管使用此选项似乎对我没有任何改变。
我还发现了一个 可以减慢一个特定的帧,所以我认为我应该能够将此代码应用到我的用例中。不过,过渡持续时间在各帧之间看起来是相同的。 (请注意,最后一个示例存在前一行消失的问题,这也不是我想要的;这只是为了说明持续时间不会改变)。
我错过了什么?
library(data.table)
library(gganimate)
DT <- data.table(x = rep(1:10, times=100),
y = rep(1:10, times=100) + rnorm(1000),
id = rep(1:100, each=10))
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_reveal(id)
animate(anim, nframes = 100)
####Playing around with eas_aes does not work for me
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_reveal(id) +
ease_aes("exponential-in")
animate(anim, nframes = 100)
####Transition states also doesn't work:
#
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_states(id,
state_length = 0,
transition_length = 100:1)
animate(anim, nframes = 100)
只需创建一个 time
列,连续时间之间的差距呈指数下降,并据此显示。
DT <- data.table(x = rep(1:10, times=100),
y = rep(1:10, times=100) + rnorm(1000),
id = rep(1:100, each=10),
time = rep(cumsum(100 / 1:100), each = 10))
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_reveal(time)
animate(anim, nframes = 200)
我有一个有几百行的情节。我希望这些线条随着时间的推移出现;首先慢慢地,有时间向观众解释发生了什么事;然后越来越快。
下面的最小示例给出了动画当前外观的示例。我想要的是第一帧有几秒钟,第二帧大约是一半,第三帧是一半,等等。本质上,持续时间应该呈指数级变短。
但是,我不知道如何更改持续时间。我认为选项 ease_aes()
应该这样做,因为它允许 exponential_in
等函数。尽管使用此选项似乎对我没有任何改变。
我还发现了一个
我错过了什么?
library(data.table)
library(gganimate)
DT <- data.table(x = rep(1:10, times=100),
y = rep(1:10, times=100) + rnorm(1000),
id = rep(1:100, each=10))
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_reveal(id)
animate(anim, nframes = 100)
####Playing around with eas_aes does not work for me
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_reveal(id) +
ease_aes("exponential-in")
animate(anim, nframes = 100)
####Transition states also doesn't work:
#
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_states(id,
state_length = 0,
transition_length = 100:1)
animate(anim, nframes = 100)
只需创建一个 time
列,连续时间之间的差距呈指数下降,并据此显示。
DT <- data.table(x = rep(1:10, times=100),
y = rep(1:10, times=100) + rnorm(1000),
id = rep(1:100, each=10),
time = rep(cumsum(100 / 1:100), each = 10))
anim <- ggplot(DT) +
geom_line(aes(x=x, y=y, group=id)) +
transition_reveal(time)
animate(anim, nframes = 200)