微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用gganimate添加几何

如何解决用gganimate添加几何

我想用gganimate创建一个动画ggplot。有没有一种方法可以使用gganimate添加多个动画几何体?因此,如在下面使用transition_states()的示例中,我希望geom_smooth()出现为新状态,而不是geom_points()。最后,我要控制持续时间,分别输入和退出第二个几何图形。

  library(gganmiate)
  ggplot(iris,aes(x = Petal.Width,y = Petal.Length)) +
  geom_smooth(aes(colour = Species),method = "lm",se = F) +
  geom_point() +
  transition_states(Species,transition_length = 2,state_length = 1)

enter image description here

解决方法

通常,使用 gganimate 可以单独控制各个组件。但是,我认为您当前不希望做的事情有效(但也许有人知道更好-会受到高度赞赏)。

使用transition_components()代替transition_states()

从文档中:

transition_components(): 这种过渡允许各个视觉组件定义自己的“生命周期”。这意味着最终动画将没有任何公共的“状态”和“过渡”阶段,因为任何组件在任何时间点都可以移动或静止。

下面是一个在每个时间步分别控制两个点的示例:

data <- data.frame(
      x = c(1,1,2,2),y = c(1,3,4,5,5),time = c(1,id = c(1,col = c("red","red","blue","yellow","green","pink")
   )

 anim2 <- ggplot(data,aes(x,y,group = id,size = 10,colour = col)) +
       geom_point() + transition_components(time)
 
 anim2

enter image description here

您可以在此处精确定义每个时间步长在每个点上发生的情况。甚至定义它应该在什么时间出现。

希望能解决您的问题,但是此功能(当前)不适用于行。

当您尝试将这些内容以某种方式集成到此工作流程中时,会出现以下错误:

错误:transition_components当前不支持路径层

因此基本上所有带有geom_line,geom_smooth等行的东西都无法与此功能一起使用。

我认为您想要的是防止发生过渡的点的奇怪行为以及geom_smooth滞后。也许您可以只设置代码transition_length = 0来防止这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。