Я создаю анимацию с помощью gganimate
, но мне нужно показать дату в заголовке. Мои данные df
(dput()
включены в конце) малы, и анимация работает нормально, когда я не показываю заголовок с датой, но мне нужно включить его. Вот код, который я использовал:
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)}')
Выход
Создано 16 марта 2022 г. пакетом reprex (v2.0.1)
@tjebo, я только что создал репрекс. Спасибо за ваше предложение!
Большое спасибо за ваш ответ @Quinten, может быть, вы могли бы предложить мне виньетку, чтобы прочитать об элементах для
gganimate
likeframe_along
, о которых я не знал, но теперь я мог набросать свою анимацию!