r - 如何在两个相互依赖的数据集上使用 gganimate
问题描述
正如标题所示,我想为两个数据集制作动画。
第一个,很简单:
dots <- tribble(
~x, ~y, ~time,
1, 1, 1,
1, 2, 2,
2, 2, 3,
2, 1, 4,
1, 1, 5
)
anim <- ggplot(data = dots, mapping = aes(x, y)) +
geom_point() +
transition_time(time) +
ggtitle("Frame: {frame_time}")
anim
这会产生以下令人兴奋的动画:
如您所见,点根据dots
tibble 中的时间维度移动,其基数为 5。我希望在 whentime == 2
和 when出现一个框time == 4
。
如果我修改代码,我可以让这些框静态显示:
boxes <- tribble(
~x, ~y, ~id, ~timeb,
0.9, 1.9, 1, 2,
1.1, 1.9, 1, 2,
1.1, 2.1, 1, 2,
0.9, 2.1, 1, 2,
0.9, 1.9, 1, 2,
1.9, 0.9, 2, 4,
2.1, 0.9, 2, 4,
2.1, 1.1, 2, 4,
1.9, 1.1, 2, 4,
1.9, 0.9, 2, 4
)
anim <- ggplot(data = dots, mapping = aes(x, y)) +
geom_point() +
transition_time(time) +
ggtitle("Frame: {frame_time}") +
geom_polygon(data = boxes %>% filter(id == 1), mapping = aes(x, y), fill = NA, colour = "black") +
geom_polygon(data = boxes %>% filter(id == 2), mapping = aes(x, y), fill = NA, colour = "black")
anim
产生这个动画:
所以,本质上,我希望当点接近时出现这个框。
我不希望这些框简单地闪烁,我希望它们淡入淡出,例如:
我制作如下:
anim_2 <- ggplot(data = boxes, mapping = aes(x, y, group = id)) +
geom_polygon(fill = NA, colour = "black") +
transition_states(id) +
enter_fade() +
exit_fade()
anim_2
我希望这是有道理的(并且有人对此有一个好主意:)
解决方案
在此处查看此示例:https ://github.com/thomasp85/gganimate/wiki/Tracking-of-hurricanes-and-typhoons
请注意,这两个几何图形(线和点)各自指的是包含 column 的数据框time
。原则上,这可能是两个不同的数据帧,只要它们在时间维度上共享相同的命名列。
这意味着您可以transition_time
“独立”地为多个几何图形设置动画。你只需要玩弄你的盒子出现和消失的时间,让它们及时出现在点上。
推荐阅读
- scala - Promise 优于 Try 的用法
- reactjs - 反应原生 - Redux
- visual-studio - 如何在 Visual Studio IDE 中调试慢速输入?
- vb.net - VB.NET 如何从 DataGridView 更新数据源(绑定到 Dataset.DataTable)
- javascript - 反应原生点击登录后如何添加底部选项卡菜单
- reactjs - useState 不会改变 React 中的状态
- r - 在 R 中创建许多新的数据框
- python - TensorFlow 安装问题
- java - 基于标签java字符串数组搜索项目
- javascript - 如何将本地存储密钥从 Chrome 扩展程序发送到本地主机?