Scene names when using gganimate with tweenr

I am trying to add a year header to build from a dataset that was launched through tweenr. Following the lead of revolutionanalytics.com

library(tidyverse)
library(tweenr)
library(gapminder)

gapminder_edit <- gapminder %>%
  arrange(country, year) %>%
  select(gdpPercap,lifeExp,year,country, continent, pop) %>%
  rename(x=gdpPercap,y=lifeExp,time=year,id=country) %>%
  mutate(ease="linear")

gapminder_tween <- tween_elements(gapminder_edit,
                              "time", "id", "ease", nframes = 150) %>%
  mutate(year = round(time), country = .group) %>%
  left_join(gapminder, by=c("country","year","continent")) %>%
  rename(population = pop.x)

gapminder_tween %>% arrange(country, .frame) %>% head()
#          x        y     time continent population .frame      .group year     country lifeExp   pop.y gdpPercap
# 1 779.4453 28.80100 1952.000      Asia    8425333      0 Afghanistan 1952 Afghanistan  28.801 8425333  779.4453
# 2 781.7457 28.88606 1952.278      Asia    8470644      1 Afghanistan 1952 Afghanistan  28.801 8425333  779.4453
# 3 784.0462 28.97111 1952.556      Asia    8515955      2 Afghanistan 1953 Afghanistan      NA      NA        NA
# 4 786.3466 29.05617 1952.833      Asia    8561267      3 Afghanistan 1953 Afghanistan      NA      NA        NA
# 5 788.6470 29.14122 1953.111      Asia    8606578      4 Afghanistan 1953 Afghanistan      NA      NA        NA
# 6 790.9475 29.22628 1953.389      Asia    8651889      5 Afghanistan 1953 Afghanistan      NA      NA        NA

To create a gif, I can use the frame headers (a little pointless) and set title_frame = TRUE(the default) in the function gganimate.

library(gganimate)
library(animation)
p2 <- ggplot(gapminder_tween,
             aes(x=x, y=y, frame = .frame)) +
  geom_point(aes(size=population, color=continent),alpha=0.8) +
  xlab("GDP per capita") +
  ylab("Life expectancy at birth") +
  scale_x_log10()

magickPath <- shortPathName("C:\\Program Files\\ImageMagick-7.0.6-Q16\\magick.exe")
gganimate(p2, ani.options = ani.options(convert=magickPath), interval = 0.1)

enter image description here

I tried to use the column of the year ( frame = yearin display aesthetics), but this only leads to 56 frames and dots appearing several times in each frame.

p2 <- ggplot(gapminder_tween,
             aes(x=x, y=y, frame = year)) +
  geom_point(aes(size=population, color=continent),alpha=0.8) +
  xlab("GDP per capita") +
  ylab("Life expectancy at birth") +
  scale_x_log10()

enter image description here

Can I (and if so, how) have the first gif with headers for each frame corresponding to the corresponding values yearin the tween'ed data frame?

+6
1

gg_animate, , ttl.
mygg_animate.r.
:

library(tidyverse)
library(tweenr)
library(gapminder)

gapminder_edit <- gapminder %>%
  arrange(country, year) %>%
  select(gdpPercap,lifeExp,year,country, continent, pop) %>%
  rename(x=gdpPercap,y=lifeExp,time=year,id=country) %>%
  mutate(ease="linear")

gapminder_tween <- tween_elements(gapminder_edit,
                              "time", "id", "ease", nframes = 200) %>%
  mutate(year = round(time), country = .group) %>%
  left_join(gapminder, by=c("country","year","continent")) %>%
  rename(population = pop.x)

library(gganimate)
library(animation)
source("mygg_animate.r")

# Define plot titles using the new aesthetic
p2 <- ggplot(gapminder_tween,
             aes(x=x, y=y, frame=.frame, ttl=year)) +
  geom_point(aes(size=population, color=continent),alpha=0.8) +
  xlab("GDP per capita") +
  ylab("Life expectancy at birth") +
  scale_x_log10()

magickPath <- shortPathName("C:\\Program Files\\ImageMagick-7.0.6-Q16\\magick.exe")

mygg_animate(p2, ani.options = ani.options(convert=magickPath), 
     interval = 0.1, title_frame=T)

( , gif).

enter image description here

+3

All Articles