r - 使用 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)
也许很难看到,但如果你仔细观察,你会发现县之间的边界在摇摆不定。当我transition_manual
在日期之间不使用转换时不会发生这种情况,因此它必须来自这些转换。但为什么?
是否有可能以某种方式告诉gganimate
保持边界相同并且只渲染fill
每一帧?或者我可以以其他方式使边界不那么明显吗?我尝试减少size
,但这似乎没有什么不同。此外,边界似乎有点锯齿状。
解决方案
这也发生在最近他们身上:包含地图或其他静态元素的动画情节变得摆动或闪烁。我意识到摆动的发生是因为gganimate
也在动画的每一步中为地图线设置动画。这解释了为什么使用其他过渡模式或删除过渡动画可以解决闪烁问题。
如本问题所述,要从动画中排除 ggplot 图层,您需要添加一个data
参数。这样,背景中的地图或绘图将保持静态,而绘图的其余部分将具有动画效果。
推荐阅读
- php - PHP 7 Soap Server 内存不足约 10MB(libxml XML_PARSE_HUGE 问题?)。如何解决这个问题?
- go - 如何将包中存在的文件读入属于同一包的另一个文件?
- facebook - 是否仍然可以使用 Facebook Graph API 访问我的应用用户的朋友?是否已弃用?
- android - 在 Firebase 回收器适配器中,onBindViewHolder 和 onCreateViewHolder 从未调用过?
- java - 如何从java运行python脚本而不将脚本存储在.py文件中?
- android - 如何定向到下一页并在 kivy 中单击按钮时调用函数?
- python - 在终端中的python中导入火炬,但在spyder中没有
- ms-access - 如何通过 VBA 发送 AutoCAD 命令?
- javascript - 获取 JS 数据到 HTML 文件
- python - 我如何知道我的脚本是否已安装?