水平图R中的替换错误分类数据

时间:2018-10-24 20:24:38

标签: r levelplot

我需要在循环后在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

0 个答案:

没有答案