Home > Mobile >  gganimate not showing title with Date when using current_frame or frame_time
gganimate not showing title with Date when using current_frame or frame_time

Time:03-17

I am creating an animation with gganimate but I need to show the date on title. My data df (dput() included at the end) is small and the animation works fine when I do not show the title with date but I need to include it. Here is the code I used:

library(tidyverse)
library(ggplot2)
library(gganimate)
#Code for plot
df %>% 
  pivot_longer(-c(Date)) %>%
  ggplot(aes(x=Date,y=value,color=name,
             group=name)) 
  geom_point(size=2) 
  geom_line(size=1) 
  scale_y_continuous(labels = scales::comma) 
  geom_segment(aes(xend = Date, yend = value), linetype = 2, colour = 'grey')  
  geom_text(aes(x = Date, label = sprintf("%5.0f", value),group=name), hjust = 0,show.legend = F,fontface='bold',color='black')  
  theme(axis.text.x = element_text(face = 'bold',color='black'),
        axis.text.y = element_text(face = 'bold',color='black'),
        legend.text = element_text(face = 'bold',color='black'),
        axis.title = element_text(face = 'bold',color='black'),
        legend.position = 'bottom',
        legend.title = element_text(face = 'bold',color='black'),
        legend.justification = 'center') 
  guides(color=guide_legend(nrow=1,byrow=TRUE)) 
  transition_reveal(Date) 
  view_follow(fixed_x = TRUE,fixed_y = TRUE) 
  labs(title = 'Values at {current_frame}')

When I add current_frame or frame_time I get this and the animation is not rendered:

object 'current_frame' not found

Or this:

object 'frame_time' not found

How can I solve this issue so that I can show my date on title? Many thanks!

My data df is next:

#Data
df <- structure(list(A = c(209.666666666667, 205, 203.333333333333, 
202.333333333333, 223.666666666667, 199.666666666667, 192.666666666667, 
213.666666666667, 206.666666666667, 206.666666666667, 196.333333333333, 
197.333333333333, 204, 191.333333333333, 203.666666666667, 200.666666666667, 
201, 199.333333333333, 204.666666666667, 195, 217, 212, 200, 
193.333333333333, 211.333333333333), B = c(0, 0, 25.6666666666667, 
0, 0, 7.33333333333334, 3.33333333333334, 23.3333333333333, 27.3333333333333, 
60.3333333333333, 99.6666666666667, 174.666666666667, 237, 310.666666666667, 
413.333333333333, 544.333333333333, 576, 688.666666666667, 722.333333333333, 
878, 831, 865, 938, 858.666666666667, 770.666666666667), Date = structure(c(18334, 
18335, 18336, 18337, 18338, 18339, 18340, 18341, 18342, 18343, 
18344, 18345, 18346, 18347, 18348, 18349, 18350, 18351, 18352, 
18353, 18354, 18355, 18356, 18357, 18358), class = "Date")), class = "data.frame", row.names = c(NA, 
25L))

CodePudding user response:

You should use frame_along in the title to display. You can use this code:

    df <- structure(list(A = c(209.666666666667, 205, 203.333333333333, 
                           202.333333333333, 223.666666666667, 199.666666666667, 192.666666666667, 
                           213.666666666667, 206.666666666667, 206.666666666667, 196.333333333333, 
                           197.333333333333, 204, 191.333333333333, 203.666666666667, 200.666666666667, 
                           201, 199.333333333333, 204.666666666667, 195, 217, 212, 200, 
                           193.333333333333, 211.333333333333), B = c(0, 0, 25.6666666666667, 
                                                                      0, 0, 7.33333333333334, 3.33333333333334, 23.3333333333333, 27.3333333333333, 
                                                                      60.3333333333333, 99.6666666666667, 174.666666666667, 237, 310.666666666667, 
                                                                      413.333333333333, 544.333333333333, 576, 688.666666666667, 722.333333333333, 
                                                                      878, 831, 865, 938, 858.666666666667, 770.666666666667), Date = structure(c(18334, 
                                                                                                                                                  18335, 18336, 18337, 18338, 18339, 18340, 18341, 18342, 18343, 
                                                                                                                                                  18344, 18345, 18346, 18347, 18348, 18349, 18350, 18351, 18352, 
                                                                                                                                                  18353, 18354, 18355, 18356, 18357, 18358), class = "Date")), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                                   25L))
library(reprex)
library(tidyverse)
#> Warning: package 'tidyr' was built under R version 4.1.2
#> Warning: package 'readr' was built under R version 4.1.2
#> Warning: package 'dplyr' was built under R version 4.1.2
library(ggplot2)
library(gganimate)
#Code for plot
df %>% 
  pivot_longer(-c(Date)) %>%
  ggplot(aes(x=Date,y=value,color=name,
             group=name)) 
  geom_point(size=2) 
  geom_line(size=1) 
  scale_y_continuous(labels = scales::comma) 
  geom_segment(aes(xend = Date, yend = value), linetype = 2, colour = 'grey')  
  geom_text(aes(x = Date, label = sprintf("%5.0f", value),group=name), hjust = 0,show.legend = F,fontface='bold',color='black')  
  theme(axis.text.x = element_text(face = 'bold',color='black'),
        axis.text.y = element_text(face = 'bold',color='black'),
        legend.text = element_text(face = 'bold',color='black'),
        axis.title = element_text(face = 'bold',color='black'),
        legend.position = 'bottom',
        legend.title = element_text(face = 'bold',color='black'),
        legend.justification = 'center') 
  guides(color=guide_legend(nrow=1,byrow=TRUE)) 
  transition_reveal(Date) 
  view_follow(fixed_x = TRUE,fixed_y = TRUE)  
  labs(title = 'Values at {(frame_along)}')

Output

Created on 2022-03-16 by the reprex package (v2.0.1)

  • Related