首页 > 解决方案 > 使用 gganimate 为 ggplot choropleth 设置动画时摆动线条

问题描述

gganimate使用ggplot2.

此处提供了我的数据选择,代码为:

library(tidyverse)
library(gganimate)

part_data <- readRDS(file = "part_data.Rds")

p <- part_data %>%
  ggplot(aes(x = long, y = lat, group = group)) +
  geom_polygon(aes(fill = confirmed), color = "grey70", size = 0.05) +
  coord_map() +
  scale_fill_distiller(trans = "log10", direction = 1, palette = "YlOrRd", na.value = "white") + 
  transition_time(time = date)

animate(p,
        fps = 3, 
        duration = 5,
        renderer = gifski_renderer("countyevolution.gif"),
        width = 1200, height = 750, res = 100)

这产生了这个GIF: 动图

也许很难看到,但如果你仔细观察,你会发现县之间的边界在摇摆不定。当我transition_manual在日期之间不使用转换时不会发生这种情况,因此它必须来自这些转换。但为什么?

是否有可能以某种方式告诉gganimate保持边界相同并且只渲染fill每一帧?或者我可以以其他方式使边界不那么明显吗?我尝试减少size,但这似乎没有什么不同。此外,边界似乎有点锯齿状。

标签: rggplot2choroplethgganimate

解决方案


这也发生在最近他们身上:包含地图或其他静态元素的动画情节变得摆动或闪烁。我意识到摆动的发生是因为gganimate也在动画的每一步中为地图线设置动画。这解释了为什么使用其他过渡模式或删除过渡动画可以解决闪烁问题。

本问题所述,要从动画中排除 ggplot 图层,您需要添加一个data参数。这样,背景中的地图或绘图将保持静态,而绘图的其余部分将具有动画效果。


推荐阅读