我需要在循环后在levelplot中制作带有三个图形的gif。在对象gg3中,我得到一个错误,当光栅化图形时,类与光栅具有的值不匹配。如何跳过出现此错误的图像?因为很少有图像出现此问题
FUN <- function() {
lapply(1:length(name), function(i) {
gg1<-ggplot(f[1:i,, drop=FALSE],aes(y=SCA,x=Dia)) + ggtitle("Cobertura nival") +
xlab("Días") + ylab(expression("SCA"~(km^2)))+geom_line(colour="deepskyblue2",size=1)+ theme_classic()+
scale_x_continuous(breaks=seq(min(f$Dia), max(f$Dia),by=30),lim=c(min(f$Dia), max(f$Dia)))+ theme(axis.text=element_text(size=11,colour= "black"),
plot.title = element_text(hjust = 0.5,size = 13,colour="black",face="bold"),plot.margin = margin(0, 1, 1, 0, "cm"),axis.title.x = element_text(size=11),axis.title.y = element_text(size=11))+
scale_y_continuous(breaks=seq(0,8500,by=2000),lim=c(min(f$SCA), max(f$SCA)))
gg2<-ggplot(f[1:i,, drop=FALSE],aes(y=Caudal,x=Dia)) + ggtitle("Caudal") +
xlab("Días") + ylab(expression("Caudal"~(m^3/s^-1)))+geom_line(colour="mediumaquamarine",size=1)+ theme_classic()+
scale_x_continuous(breaks=seq(min(f$Dia), max(f$Dia),by=30),lim=c(min(f$Dia), max(f$Dia)))+ theme(axis.text=element_text(size=11,colour= "black"),
plot.title = element_text(hjust = 0.5,size = 13,colour="black",face="bold"),plot.margin = margin(0, 1, 1, 0, "cm"),axis.title.x = element_text(size=11),axis.title.y = element_text(size=11))+
scale_y_continuous(breaks=seq(0,2500,by=500),lim=c(min(f$Caudal), max(f$Caudal)))
gg3<-raster(myras[[i]])
gg3 <- ratify(gg3)
rat <- levels(gg3)[[1]]
rat$class <- c("Nubes","Sin nieve","Nieve")
levels(gg3) <- rat
cols <- colorRampPalette(c("lightskyblue2","wheat4", "white"))
gg3<-levelplot(gg3, att='class',margin=F, xlab="",col.regions=cols,ylab="",colorkey=list(labels=list(cex=1),length = 1.5, width = 2.5)
,sub=list(cex=1.3,label=date[[i]]),main=list(label="Cuenca del río Aysén",cex=1.5))+layer(sp.polygons(mask,col="seashell3"))
grid.arrange(gg3, arrangeGrob(gg1,gg2, ncol=1,nrow=2), ncol=2,nrow=1,widths=c(2,1.5),top="")
animation::ani.pause()
})
}
type <- if(.Platform$OS.type == "windows") shell else system
saveGIF(FUN(),interval = 0.15, outdir = getwd(), cmd.fun = type,ani.width=1024, ani.height=600,movie.name="serie_nieve.gif")
Error in `$<-.data.frame`(`*tmp*`, "class", value = c("Nubes", "Sin nieve", :
replacement has 3 rows, data has 2