Change label of gganimate frame title

Nicola Pasquino picture Nicola Pasquino · May 23, 2016 · Viewed 7.4k times · Source

Skimming through the options of gganimate that can be set when gg_animate() is called to render the animated sequence, it seems that there is no option to change the frame title so to make it clearer to the observer of what is the parameter that the frame is based on.

In other words, suppose that frame = year in a layer: how do I make the frame's title be year: #### where #### is the year of the current frame? Am I missing something or is it a limitation of the gganimate library?

How would you achieve the same result by a workaround? Thanks for your advice.

Answer

eipi10 picture eipi10 · May 23, 2016

Update for new gganimate API

gganimate has been redesigned with a new API. The frame title can now be animated with the code below. state_length and transition_length set the relative amount of time spent in a given "state" (meaning a given value of cyl here) and transitioning between states. closest_state means that while transitioning between states (which are the integer values of cyl in this case) the cyl value closest to the current transition value should be shown (e.g., since cyl can be 4, 6, or 8, values between, say, 4 and 5 are displayed as 4 and values between 5 and 6 are displayed as 6):

p = ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() + 
  transition_states(cyl, transition_length=1, state_length=30) +
  labs(title = 'Cylinders: {closest_state}')

animate(p, nframes=40)

gganimate can be installed from github by running devtools::install_github('thomasp85/gganimate')

The vignette has more details on how to use the new API.

Original Answer

The frame's subset value is appended to any pre-existing title. You can therefore add a title with explanatory text. For example:

library(gganimate)

p = ggplot(mtcars, aes(wt, mpg, frame=cyl)) + geom_point() + 
    ggtitle("Cylinders: ")

gg_animate(p)

As you can see in the GIF below, the prefix "Cylinders: " is now added to the title before the value of cyl:

enter image description here