5

如何创建一个动画,1. 在与测量时间成比例的时间向绘图添加新点,以及 2. 随着时间的推移淡出旧点?

我想也许我可以使用以下代码实现这一点:

library(tidyverse)
library(gganimate)
set.seed(1)

ex =
expand.grid(x = seq(0, 1, 0.2),
            y = seq(0, 1, 0.2),
            t = seq(0, 10, 1)) %>%
  as_tibble() %>%
  mutate(z = rnorm(x, mean = t, sd = 0.2))

ggplot(data = ex,
       mapping = aes(x, y, color = z)) +
  geom_jitter(position = position_jitter(width = 0.02, height = 0.02)) +
  transition_time(t) +
  scale_color_viridis_c() +
  shadow_mark(alpha = 0.4, size = 1)

生成的动画

但是,该图会随时间对点的位置进行插值。虽然这对于复制 gapminder 是有意义的,但它似乎不是我正在寻找的效果:我想要同样的东西,但没有移动的球。我只希望它们出现然后淡出。但我想知道是否有一种使用语法的好方法来做到这一点?

4

1 回答 1

2

观看 Thomas 关于可视化语法的演讲,我在他的 ggraph 示例中看到,是的,他在制定语法时想到了我的问题。

ggplot(data = ex,
       mapping = aes(x, y, color = z)) +
  geom_jitter(position = position_jitter(width = 0.02, height = 0.02)) +
  transition_events(start = t, 
                    enter_length = 1,
                    exit_length = 4) +
  scale_color_viridis_c() +
  enter_fade() +
  exit_fade()

建议的解决方案

于 2018-12-09T21:53:15.310 回答