
Last chance! 50% off unlimited learning
Sale ends in
Animations can be created by either using the frame
argument in
plot_ly()
or the (unofficial) frame
ggplot2 aesthetic in
ggplotly()
. By default, animations populate a play button
and slider component for controlling the state of the animation
(to pause an animation, click on a relevant location on the slider bar).
Both the play button and slider component transition between frames according
rules specified by animation_opts()
.
animation_opts(p, frame = 500, transition = frame, easing = "linear",
redraw = TRUE, mode = "immediate")animation_slider(p, hide = FALSE, ...)
animation_button(p, ...)
a plotly object.
The amount of time between frames (in milliseconds).
Note that this amount should include the transition
.
The duration of the smooth transition between frames (in milliseconds).
The type of transition easing. See the list of options here https://github.com/plotly/plotly.js/blob/master/src/plots/animation_attributes.js
Trigger a redraw of the plot at completion of the transition? A redraw may significantly impact performance, but may be necessary to update graphical elements that can't be transitioned.
Describes how a new animate call interacts with currently-running animations. If `immediate`, current animations are interrupted and the new animation is started. If `next`, the current frame is allowed to complete, after which the new animation is started. If `afterall` all existing frames are animated to completion before the new animation is started.
remove the animation slider?
for animation_slider
, attributes are passed to a special
layout.sliders object tied to the animation frames.
The definition of these attributes may be found here
https://github.com/plotly/plotly.js/blob/master/src/components/sliders/attributes.js
For animation_button
, arguments are passed to a special
layout.updatemenus button object tied to the animation
https://github.com/plotly/plotly.js/blob/master/src/components/updatemenus/attributes.js
# NOT RUN {
df <- data.frame(
x = c(1, 2, 2, 1, 1, 2),
y = c(1, 2, 2, 1, 1, 2),
z = c(1, 1, 2, 2, 3, 3)
)
plot_ly(df) %>%
add_markers(x = 1.5, y = 1.5) %>%
add_markers(x = ~x, y = ~y, frame = ~z)
# it's a good idea to remove smooth transitions when there is
# no relationship between objects in each view
plot_ly(mtcars, x = ~wt, y = ~mpg, frame = ~cyl) %>%
animation_opts(transition = 0)
# works the same way with ggplotly
if (interactive()) {
p <- ggplot(txhousing, aes(month, median)) +
geom_line(aes(group = year), alpha = 0.3) +
geom_smooth() +
geom_line(aes(frame = year, ids = month), color = "red") +
facet_wrap(~ city)
ggplotly(p, width = 1200, height = 900) %>%
animation_opts(1000)
}
#' # for more, see https://cpsievert.github.io/plotly_book/key-frame-animations.html
# }
Run the code above in your browser using DataLab