¿Cómo puedo mejorar la leyenda del trazado del mapa de trama espacial utilizando ggplot en comparación con una leyenda de spplot()?¿Cómo mejorar un mapa de trama espacial utilizando ggplot en comparación con spplot?
me gustaría mapas espaciales de la trama utilizando ggplot() en lugar de ssplot() Sin embargo, hay algunas cosas que me gustaría mejorar en comparación con el spplot:
- crear una leyenda ggplot que va desde pequeño (abajo) a valores grandes (arriba)
- Tengan los saltos en la leyenda ggplot similares a la leyenda ssplot() para que sepa cuáles son los límites de cada color.
## load packages
require(raster)
require(ggplot2)
require(rgdal)
require(RColorBrewer)
set.seed(1)
r <- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40,
crs="+proj=lcc +lat_1=48 +lat_2=33 +lon_0=-100
+ellps=WGS84")
r <- setValues(r,matrix(rnorm(1600, mean=0.4,sd=0.2)))
## 1. spatial map with spplot
cuts <-seq(minValue(r),maxValue(r),length.out=8)
cuts = round(cuts,digits=2)
col.regions = brewer.pal(length(cuts)+3-1, "RdYlGn")
print(
spplot(as(r, 'SpatialGridDataFrame'),at=cuts,
col.regions=col.regions,
colorkey=list(labels=list(at=cuts),at=cuts), pretty=TRUE,
scales=list(draw=T)
)
)
## 2. spatial map with ggplot
p = rasterToPoints(r); df = data.frame(p)
colnames(df) = c("x", "y", "NDVI")
p <- ggplot(data=df) + geom_tile(aes(x, y, fill=NDVI)) +
coord_equal() + labs(x=NULL, y=NULL) +
scale_fill_gradient2(low="red", mid="yellow",high="green",
limits=c(minValue(r),maxValue(r)), midpoint = 0.4) + theme_bw() +
scale_x_continuous(expand=c(0,0)) + scale_y_continuous(expand=c(0,0))
print(p)
ssplot() Resultado
ggplot() Resultado
No utilice contrastes de color rojo-verde. El 5-10% de los hombres con debilidad de color rojo-verde los encontrarán [muy difícil de leer] (http://vischeck.homeip.net/uploads/131191118210660/). – hadley
el enlace al sitio de Koske: ilustra más o menos lo que me gustaría hacer. Exploraré aún más la capacidad de ggplot(), ajustaré los colores, mejoraré la leyenda y publicaré una actualización a continuación. Todos los consejos/ejemplos son bienvenidos. Gracias – Janvb