如何使用gganimate包在R中绘制动态地图?

如何使用gganimate包在R中绘制动态地图?,r,ggplot2,gganimate,R,Ggplot2,Gganimate,据我所知,gganimate已经在1.0.3版中,我们可以使用transition.*函数来绘制动态图。但当我运行以下代码时,出现了一个错误: Error in `$<-.data.frame`(`*tmp*`, "group", value = "") : replacement has 1 row, data has 0 “$中的错误您在顶层ggplot()行中没有定义数据,因此transition.*中的state不知从何而来 我也不清楚为什么代码中有geom_抖动级别。与t

据我所知,gganimate已经在1.0.3版中,我们可以使用
transition.*
函数来绘制动态图。但当我运行以下代码时,出现了一个错误:

Error in `$<-.data.frame`(`*tmp*`, "group", value = "") : 
  replacement has 1 row, data has 0

“$中的
错误您在顶层
ggplot()
行中没有定义数据,因此
transition.*
中的
state
不知从何而来

我也不清楚为什么代码中有
geom_抖动
级别。与
transition.*
类似,它没有顶级数据/美学映射可继承,因此如果
transition.*
没有首先触发错误,它也会抛出错误。此外,即使我们添加映射,考虑到数据中lat/lon坐标的范围,0.1的抖动在视觉上也几乎不重要

您可以尝试以下操作:

# put data in top level ggplot()
ggplot(data,
       aes(x = lon, y = lat))+
  geom_map(data = world,
           map = world,
           aes(long,lat,map_id = region),
           color = '#333300', fill = '#663300',
           # lighter background for better visibility
           alpha = 0.5) + 
  geom_point(size = 2.5) +
  # limit coordinates to relevant range
  coord_quickmap(x = c(-180, -50), y = c(25, 85)) +
  transition_states(states = state)

# put data in top level ggplot()
ggplot(data,
       aes(x = lon, y = lat))+
  geom_map(data = world,
           map = world,
           aes(long,lat,map_id = region),
           color = '#333300', fill = '#663300',
           # lighter background for better visibility
           alpha = 0.5) + 
  geom_point(size = 2.5) +
  # limit coordinates to relevant range
  coord_quickmap(x = c(-180, -50), y = c(25, 85)) +
  transition_states(states = state)