如何在没有插值点的情况下制作 shadow_mark?
How to make a shadow_mark without interpolating points?
我如何创建一个动画 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 有意义,但它似乎并不是我正在寻找的效果:我想要同样的东西,但没有移动的球。我只想让它们出现然后淡出。但我想知道是否有使用语法的好方法?
观看 Thomas 在 A Grammar of Visualization 上的演讲,我在他的 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()
我如何创建一个动画 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 有意义,但它似乎并不是我正在寻找的效果:我想要同样的东西,但没有移动的球。我只想让它们出现然后淡出。但我想知道是否有使用语法的好方法?
观看 Thomas 在 A Grammar of Visualization 上的演讲,我在他的 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()