分离第一帧和最后一帧的元素

问题描述 投票:0回答:0

我想创建一个 GIF,一个一个地绘制非洲国家。但是,我注意到第一个国家/地区的边界外观总是出现在最后一帧而不是第一帧。添加

end_pause
.

时,此问题变得更加明显

这里是例子:

# load packages 
pack <- c('gganimate','rnaturalearth','sf','tidyverse')
lapply(pack,require,character.only=T)

# create the gif for African content
africa <- ne_countries(continent = "africa",returnclass ="sf")
# get 10 countries as an example
country10 <- st_as_sf(head(africa, 10))
# set the factor level for the apperance order of the countries
country10$order <- factor(country10$sovereignt,levels=country10$sovereignt)

#  merge geometry for africa
africa$un <- rep.int(1,length(africa$featurecla))
sf_use_s2(FALSE)
africa <- africa %>%
  group_by(un) %>%
  summarise(geometry=st_union(geometry))


a <- ggplot(data = africa) + 
  geom_sf() + 
  coord_sf()+
  theme(axis.text.y = element_blank(),
        axis.text.x = element_blank(),
        axis.title.x = element_blank(),
        axis.ticks.y = element_blank(),
        axis.ticks.x = element_blank(),
        panel.background = element_rect(fill = "lightgrey", colour = NA),
        plot.background = element_rect(fill = "lightgrey",colour = NA),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank())+
  geom_sf(data = country10, col = "green3", fill = "transparent") +
  transition_states(order) + shadow_mark()

# output Africa gif
animate(a,fps=10, height = 4,
        width = 3, units = "cm", res = 600,end_pause = 30)
anim_save("africa.gif")

感谢任何将第一帧的元素与最后一帧的元素分开的帮助。

r ggplot2 gif animated-gif gganimate
© www.soinside.com 2019 - 2024. All rights reserved.