Отображать разные элементы времени на разных скоростях в gganimate - PullRequest
1 голос
/ 02 июня 2019

Используя код из этого ответа, Как заставить точки в gganimate появляться, а не переход , как 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()  
animate(a, nframes = 100)

или

animate(a, fps=5)

Можно ли контролировать скорость каждого месяца (элемента времени)?Например, отображение месяца 5 очень быстро, ..., месяца 9 очень медленно.

1 Ответ

3 голосов
/ 02 июня 2019

Это моя рудиментарная попытка создать вспомогательный столбец, который можно использовать в качестве нашего 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)

Создано в 2019-06-02 пакетом Представить (v0.3.0)

...