Mi objetivo es trazar un rasterstack como una sola imagen usando ggplot2. En primer lugar, aplico ggplot
en un raster de una sola capa utilizando el siguiente código:
#Load packages
library(raster)
library(ggplot2)
#Create a random raster layer
set.seed(11)
r <- raster(nrows = 10, ncols = 10, res = 30, xmn = 267195, xmx = 267375, ymn = 4016985, ymx = 4017135)
r <- setValues(r, runif(ncell(r), min = -10000, max = 10000))
crs(r) <- "+proj=utm +zone=43 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0"
plot(r) #Produce simple plot
rdf <- as.data.frame(r, xy=TRUE) #Convert raster to data.frame
names(rdf)[3] <- 'magnitude' #Name value column
head(rdf)
Ahora aplico gglpot()
ggplot(data = rdf)+
geom_raster(mapping=aes(x=x, y=y, fill=magnitude))+
scale_fill_gradientn(colours= rev(terrain.colors(10)), name='Magnitude')
Se imprime correctamente. Ahora creo una pila de trama con 10 capas y llamo a esto ndvi
.
rr <- lapply(1:10, function(i) setValues(r, runif(ncell(r), min = -10000, max = 10000)))
ndvi <- stack(rr)
crs(ndvi) <- "+proj=utm +zone=43 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0"
plot(ndvi)
¿Cómo podría trazar esta pila utilizando ggplot2
? ¿Creo un data.frame pero entonces cómo suministro el argumento fill en aes()
et facet_wrap()
?