Я хочу снизить скорость перехода между состояниями при использовании library(gganimate)
.
Вот небольшой пример:
# devtools::install_github("thomasp85/gganimate")
library(gganimate) # v0.9.9.9999
dat_sim <- function(t_state, d_state) {
data.frame(
x = runif (1000, 0, 1),
y = runif (1000, 0, 1),
t_state = t_state*d_state
)
}
dat <- purrr::map_df(1:100, ~ dat_sim(., 1))
ggplot(dat, aes(x, y)) +
geom_hex(bins = 5) +
theme_void() +
lims(x = c(.3, .7),
y = c(.3, .7)) +
theme(legend.position = "none") +
transition_time(t_state)
Мое идеальное поведение было бы намного медленнее (10–100 раз), поэтому цвет меняется постепенно, и ни у кого не бывает приступов.
Если я попытаюсь использовать transition_states()
для ручного управления, я получаю гифку с пустыми рамками. Пробовал разные комбинации для transition_legnth=
и state_length=
без заметного эффекта.
ggplot(dat, aes(x, y)) +
geom_hex(bins = 5) +
theme_void() +
lims(x = c(.3, .7),
y = c(.3, .7)) +
theme(legend.position = "none") +
transition_states(t_state, transition_length = .1, state_length = 2)
Я нашел в документы функцию animate
, которая может принимать параметры кадров в секунду и деталь.
@paramfps The frame rate of the animation in frames/sec
@paramdetail The number of additional frames to calculate, per frame
Результат:
p <- ggplot(dat, aes(x, y)) +
geom_hex(bins = 5) +
theme_void() +
lims(x = c(.3, .7),
y = c(.3, .7)) +
theme(legend.position = "none") +
transition_time(t_state)
animate(p, fps=1)
Также там вы можете указать формат вывода, такой как PNG, jpeg, svg.