Show Sidebar Hide Sidebar

# Cumulative Animations in ggplot2

How to create cumulative animations in ggplot2 with Plotly.

### New to Plotly?

Plotly's R library is free and open source!
You can set up Plotly to work in online or offline mode.
We also have a quick-reference cheatsheet (new!) to help you get started!

### Version Check

Version 4 of Plotly's R package is now available!
Check out this post for more information on breaking changes and new features available in this version.

library(plotly)
packageVersion('plotly')

## [1] '4.9.1'


### Frames

Now, along with data and layout, frames is added to the keys that figure allows. Your frames key points to a list of figures, each of which will be cycled through upon instantiation of the plot.

### Cumulative Lines Animation

library(plotly)
library(quantmod)

invisible(getSymbols("AAPL",src='yahoo'))

df <- data.frame(Date=index(AAPL),coredata(AAPL))
df <- tail(df, 30)
df$ID <- seq.int(nrow(df)) accumulate_by <- function(dat, var) { var <- lazyeval::f_eval(var, dat) lvls <- plotly:::getLevels(var) dats <- lapply(seq_along(lvls), function(x) { cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]]) }) dplyr::bind_rows(dats) } df <- df %>% accumulate_by(~ID) p <- ggplot(df,aes(ID, AAPL.Close, frame = frame)) + geom_line() p <- ggplotly(p) %>% layout( title = "AAPL: Last 30 days", yaxis = list( title = "Close", zeroline = F, tickprefix = "$"
),
xaxis = list(
title = "Day",
zeroline = F,
showgrid = F
)
) %>%
animation_opts(
frame = 100,
transition = 0,
redraw = FALSE
) %>%
animation_slider(
currentvalue = list(
prefix = "Day "
)
)

p


### Reference

To read more on animations see The Plotly Book.