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

发布于 2020-08-28 21:13:08
通常,单独控制单个组件是可能的,使用gganimate。然而,我不认为你现在想要做的工作有效(但也许有人知道得更好-会非常感谢)。
使用transition_components()而不是transition_states()
从文档中:
transition_components():此转换允许各个可视化组件定义自己的“生命周期”。这意味着最终的动画将不会有任何公共的“状态”和“过渡”阶段,因为任何组件都可以在任何时间点上移动或静态。
下面是一个在每个时间步分别控制两个点的示例:
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来防止这种情况。
https://stackoverflow.com/questions/63524912
复制相似问题