【发布时间】:2020-04-13 12:01:29
【问题描述】:
在 gganimate 中使用 transition_layer 生成绘图时,我注意到添加了一个额外的 NA 层。
作为一个最低限度的例子。假设我对 5 个组(标记为“id”)中的每一个组(标记为“id”)有 10 个 x,y 对的独特观察(标记为“obs”)。
library(tidyverse)
library(gganimate)
dat1 <- data.frame(expand.grid(id = seq(1,5,1),obs=seq(1,10,1))) %>%
mutate(x = runif(50,10,30),
y = runif(50,100,300))
我想创建一个在 5 个组中的每一个上转换的 gganimate 对象。本质上,这相当于为每个组创建一个独特的 x,y 散点图,然后将这 5 个图组合成一个 GIF。我可以使用 gganimate 中的 transition_layer 函数来做到这一点:
p <- dat1 %>%
ggplot(aes(x,y))+
geom_point(data=filter(dat1,id==1))+
geom_point(data=filter(dat1,id==2))+
geom_point(data=filter(dat1,id==3))+
geom_point(data=filter(dat1,id==4))+
geom_point(data=filter(dat1,id==5))
layername <- c("one","two","three","four","five")
anim <- p + transition_layers(
layer_length = 5,
transition_length = 1,
keep_layers = FALSE,
from_blank = FALSE,
layer_order = NULL,
layer_names = layername
)+
ggtitle('Layers',
subtitle = '{closest_layer} of 5')
anim
动画按预期工作,在标题中可以看到每个图层的过渡(例如“5 个中的一个”、“5 个中的两个”、...、“5 个中的五个”)。但是,在动画结束时,我在序列中得到了休息。这些层去......“5个中的五个”,“5个中的一个”,“5个中的NA”,“5个中的一个”。
我不确定为什么动画中会出现额外的过渡。
特别是因为层中没有 NA。知道为什么会发生这种情况以及如何解决吗?或者可能是生成类似输出的更好方法?
编辑: 图层对象不包含 NA 图层
anim$layers
[[1]]
geom_point: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
[[2]]
geom_point: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
[[3]]
geom_point: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
[[4]]
geom_point: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
[[5]]
geom_point: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
【问题讨论】: