Ошибка замены категориальных данных на уровне графика R - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно сделать 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
...