使用 gganimate 为地图制作动画需要使用哪个transition_*?

avs*_*avs 5 ggplot2 gganimate

我想制作一张美国各县的动画分区统计图,其中包含一段时间内确诊的 COVID-19 病例数(是的,又一个冠状病毒图)。是三天数据选择的链接(欢迎建议更永久的托管位置)。以下是创建静态地图的代码(注释过滤器以包含所有日期):

library(tidyverse)
library(gganimate)
library(ggmap)
library(maps)
library(scales)

p <- part_data %>%
  filter(date == as.Date("2020-03-30")) %>%
  ggplot(aes(x = long, y = lat, group = group)) +
  geom_polygon(aes(fill = confirmed_new), color = "grey70", size = 0.05) + 
  geom_path(data = state_map, colour = "black") +
  coord_map() +
  scale_fill_distiller(trans = "log10", direction = 1, palette = "YlOrRd", na.value = "white", limits = c(1, 1E4), labels = comma)
Run Code Online (Sandbox Code Playgroud)

这给出了这个非常漂亮的情节: 地图图

但是我现在如何制作一个随日期移动的动画呢?我试过

p +
  transition_time(date)
Run Code Online (Sandbox Code Playgroud)

p + 
  transition_states(date)
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,R 似乎在渲染进度条出现之前就冻结了,过了一会儿我收到了错误Error: cannot allocate vector of size 128.0 Mb。问题是我不知道我是否在这里使用了正确的方法。在gganimate文档中,我读到group美学用于链接属于同一图形元素(在本例中为县)的行。但group也被用来ggplot制作剧情,这会是问题吗?任何帮助表示赞赏。谢谢。

avs*_*avs 2

我刚刚发现这transition_states也会呈现日期之间的转换。我认为这解释了为什么渲染花了这么长时间以及为什么我遇到了内存问题。使用transition_manual我让它按我的预期工作:

p + 
  transition_manual(frames = date)
Run Code Online (Sandbox Code Playgroud)