使用 current_frame 或 frame_time 时,gganimate 不显示带日期的标题

gganimate not showing title with Date when using current_frame or frame_time

我正在使用 gganimate 创建动画,但我需要在标题上显示日期。我的数据 dfdput() 包含在末尾)很小,当我不显示带日期的标题但我需要包含它时,动画效果很好。这是我使用的代码:

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}')

当我添加 current_frame 或 frame_time 时,我得到了这个并且没有渲染动画:

object 'current_frame' not found

或者这样:

object 'frame_time' not found

如何解决这个问题,以便我可以在标题上显示我的日期?非常感谢!

我的数据df是下一个:

#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))

您应该在标题中使用frame_along来显示。您可以使用此代码:

    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)}')

输出

由 reprex 包 (v2.0.1) 创建于 2022-03-16