R gganimate 因子级别之间的平滑过渡

问题描述 投票:0回答:1
library(sf)
library(ggplot2)
library(rmapshaper)
library(dplyr)
library(gganimate)

hr_sf <- readRDS(url("https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_HRV_1_sf.rds"))
hr_sf_small <-hr_sf[,c(1,4,11)]
hr_sf_small$YEAR <- as.factor(2020)
hr_sf_small_2020 <- hr_sf_small 
hr_sf_small_2010 <- hr_sf_small 
hr_sf_small_2010$YEAR <- recode_factor(hr_sf_small_2010$YEAR, "2020"="2010")

hr_sf_bind <- rbind(hr_sf_small_2010,hr_sf_small_2020)
set.seed(100)
hr_sf_bind$FILL.VAR <-sample(rainbow(7),nrow(hr_sf_bind),rep=T)
hr_sf_bind_simp <- ms_simplify(hr_sf_bind, keep = 0.10, keep_shapes = TRUE)

ggplot(hr_sf_bind_simp) + 
  geom_sf(aes(fill = FILL.VAR), lwd=0.1, col="black") +
  labs(title="How to create fade-in/fade-out transitions between discrete states: {current_frame}") + 
  theme_void() + 
  theme(legend.title=element_blank(),
        plot.title = element_text(hjust = 0.5, size=12, vjust=3)) +
  transition_manual(YEAR)

我已经成功创建了这个 geom_sf() 图的动画,它根据因子变量 FILL.VAR 在 2010 年和 2020 年两个时间点(如 YEAR 变量中所示)改变颜色。

我想知道的是如何慢慢地混合两个状态之间的转换,以便第一个状态(YEAR=2010)慢慢变得更加透明,而第二个状态(YEAR==2020)在同一时间。也就是说,我不想在 2 帧之间快速跳转,而是希望在多个帧之间实现平滑过渡。

谢谢!

r transition gganimate manual
1个回答
0
投票

这对我有用,虽然不像 id 那样顺利,但很好。

plot + transition_states(#Your index variable, transition_length = 0.25, state_length = 0.5) + enter_fade() + exit_shrink()
© www.soinside.com 2019 - 2024. All rights reserved.