R和gganimate:如何更改标题

时间:2017-12-08 13:02:12

标签: r gganimate

早上好SO社区, 我有以下代码片段:

library( animation )
library( dplyr )    
library( gganimate )
library( ggplot2 )

someData = data.frame( years = seq( -5000, 1000, by = 100 ) ) %>%
mutate( values = sample( 1:20, length( years ), replace = TRUE ),
      label = ifelse( years < 0, paste0( abs( years ), ' B.C.E.' ), years ) )

chart = ggplot( someData ) + 
geom_line( aes( x = years, y = values, frame = years, cumulative = TRUE ) ) +
ggtitle( 'Year:  ' )

gganimate( chart, interval = .2 )

这样,年份出现在情节的标题中(按数字排序)。 有没有办法将label值 - 与它们在数据框中出现的顺序相同 - 而是?

我的第一次尝试是在frame = label的美学中使用geom_line,但标签按字母顺序排列。所以,我尝试通过以下方式更改级别顺序:

someData$label = factor( someData$label, levels = someData$label, order = TRUE )

但这给了我以下错误:

Error in frame_vec == f : comparison of these types is not implemented
In addition: Warning message:
In FUN(X[[i]], ...) :
Incompatible methods ("Ops.ordered", "Ops.factor") for "=="

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

实际上有一个关于此功能的待处理pull request,但它尚未合并到原始仓库中。在此期间,您可以使用devtools::install_github("nteetor/gganimate")安装修改后的软件包,然后您可以执行以下操作:

gg_animate(chart, title_frame = ~ with(someData, label[years == .]))