Как убрать кадр в прошлом в анимации R ggplot?

#r #ggplot2 #gganimate

Вопрос:

У меня есть следующий набор данных, он содержит много точек из разных многоточий. Я хочу каждый раз показывать один полный эллипс, и эллипс может исчезнуть, как только он будет показан полностью. Мое текущее решение состоит в том, чтобы использовать transition_reveal в gganimate. У него есть две проблемы, во-первых, прошлый след нельзя удалить. Во-вторых, эллипс был показан geom_path медленно, я хочу показать полный эллипс с самого начала. Как я могу решить эти проблемы?

 library(ggplot2)
library(gganimate)
xx=c(1,1)
vv=c(-1,0)
ep=0.2
L=3
dl=100 
#generate data
data<-matrix(0,L*dl,2)
for(i in 1:L){
  for(j in 1:dl){
  data[(i-1)*dl j,]=cos(ep*j)*xx sin(ep*j)*vv
  if(j==dl){
  xx=data[i*dl,]
  vv=rnorm(2)*4
  }
 }
}
t<-rep(c(1:L),each=dl)
dat=cbind(t,data)
dat<-as.data.frame(dat)
colnames(dat)=c("t","x1","x2")
p=ggplot(dat,aes(x = x1, 
             y = x2))  
 geom_path() 
 transition_reveal(t)
p  
 

введите код здесь

введите описание изображения здесь