Step 1: Install Required Libraries
Ensure you have the necessary libraries installed and loaded:
install.packages("ggplot2")
install.packages("gganimate")
install.packages("plotly")
 
library(ggplot2)
library(gganimate)
library(plotly)
Step 2: Create an
Animated Plot with gganimate
We’ll first create a simple animated scatter plot showing the movement of
points over time.
 - Prepare the Data:
set.seed(42)
data <- data.frame(
  x = rnorm(50),
  y = rnorm(50),
  time = rep(1:5, each = 10),
  group = rep(letters[1:10], times = 5)
)
 - Create the Animated Plot:
p <- ggplot(data, aes(x = x, y = y, color = group)) +
  geom_point(size = 4) +
  labs(title = 'Time: {frame_time}', x = 'X-Axis', y = 'Y-Axis') +
  transition_time(time) +
  ease_aes('linear')
 
anim <- animate(p, nframes = 100, fps = 10, renderer = gifski_renderer())
Step 3: Export Animation Frames
Convert the gganimate
frames into individual images that can be used in plotly.
 - Save Frames:
anim_save("gganimate_frames.gif", animation = anim)
Alternatively, save the individual frames as PNG files:
frame_images <- animate(p, nframes = 100, fps = 10, renderer = file_renderer(dir = "frames", prefix = "frame", overwrite = TRUE))
Step 4: Integrate with plotly for Interactivity
 - Load Images into plotly:
     Useplotlyto create an
     interactive slider for the frames.
library(magick)
 
frames_gif <- image_read("gganimate_frames.gif")
 
frames_list <- lapply(seq_len(length(frames_gif)), function(i) {
  frame <- image_write(frames_gif[i], format = "png") 
  list(source = base64enc::dataURI(frame, mime = "image/png")) 
}) 
# Create the interactive plot using plotly
plotly_animation <- plot_ly() %>%
  layout(
    sliders = list(list(
      steps = lapply(seq_along(frames_list), function(i) {
        list(
          method = "restyle",
          args = list("images[0].source", frames_list[[i]]$source),
          label = paste("Frame", i)
        )
      })
    ))
  )
# Add the initial image
plotly_animation <- plotly_animation %>%
  add_image(
    source = frames_list[[1]]$source,
    x = 0, y = 0,
    xanchor = "center", yanchor = "middle"
  )
Step 5: Test the Integration
 - Run the
     above code to see your animated and interactive plot in the RStudio Viewer
     or browser.
- Experiment
     with the hover, zoom, and pan features provided by plotly.
Step 6: Reflect and Experiment
 - Experiment
     with more complex gganimateanimations, such as usingtransition_states()orview_follow().
- Add custom
     interactivity in plotly, such as
     hover text and annotations.
N.B: The code may have some errors.