如何在相互依赖的两个数据集上使用gganimate

问题描述 投票:1回答:1

正如标题所示,我想对两个数据集进行动画处理。

首先,非常简单:

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

这将产生以下令人兴奋的动画:

first animation

[您可以看到,点根据dots小标题中的时间维度移动,其基数为5。我希望在time == 2time == 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

哪个制作动画:

second animation

所以,从本质上讲,我希望该框在点接近时出现。

我不想让盒子简单地闪烁,我希望它们淡入和淡出,类似:

third animation

我制作如下:

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

我希望这是有道理的(并且有人对此有个好主意:)

正如标题所示,我想对两个数据集进行动画处理。第一个很简单:点

r gganimate
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.