首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gganimate添加geoms

使用gganimate添加geoms
EN

Stack Overflow用户
提问于 2020-08-21 22:38:00
回答 1查看 111关注 0票数 0

我想用gganimate创建一个动画的ggplot。有没有办法用gganimate添加几个动画geoms?因此,与下面使用transition_states()的示例一样,我希望geom_smooth()作为新状态出现,而不是与geom_points()一起出现。最后,我想控制持续时间,分别进入和退出第二个geom。

代码语言:javascript
复制
  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)

EN

回答 1

Stack Overflow用户

发布于 2020-08-28 21:13:08

通常,单独控制单个组件是可能的,使用gganimate。然而,我不认为你现在想要做的工作有效(但也许有人知道得更好-会非常感谢)。

使用transition_components()而不是transition_states()

从文档中:

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

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

代码语言:javascript
复制
data <- data.frame(
      x = c(1,1,1,1,1,2,2,2,2,2),
       y = c(1,2,3,4,5,1,2,3,4,5),
       time = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
       id = c(1,1,1,1,1,2,2,2,2,2),
      col = c("red","red","red","red","red","red","blue","yellow","green","pink")
   )

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

在这里,您可以准确地定义在每个时间步的每个点上发生了什么。或者甚至定义它应该出现在哪个时间点。

对于你的问题看起来很有希望,但是这个函数(目前)不能处理行。

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

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

所以基本上所有的东西都有一行geom_line,geom_smooth,...不可与此函数一起使用。

我认为你想要的是防止点的奇怪行为,使过渡和geom_smooth落后。也许你可以在你的代码中设置transition_length = 0来防止这种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63524912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档