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)