This is a document to show how to make a cool map from a Digital Elevation Model with both raster and rasterVis. First we load the libraries
require(rgdal)
require(raster)
require(rasterVis)
Now let’s go for a DEM
TO<-readGDAL("/Volumes/eltera/Users/adiez/Documents/MDT200-TOLEDO-h30.asc")
/Volumes/eltera/Users/adiez/Documents/MDT200-TOLEDO-h30.asc has GDAL driver AAIGrid
and has 618 rows and 1124 columns
TO<-raster(TO)
Next step, build a color palette
#El azul es 8,129,242 (#0881F2) y habrÃa que añadirlo a los valores negativos
rojo<-c(17,113,117,149,178,202,222,242,238,242,234,218,194,214,226,222,238,255,250,255,255,255,255)
verde<-c(48,153,170,190,214,226,238,238,222,206,182,157,141,157,174,186,198,206,218,222,230,242,255)
azul<-c(7,89,101,113,117,149,161,161,153,133,129,121,125,145,165,182,210,226,234,230,242,255,255)
feli<-rgb(rojo,verde,azul,max=255)
Now we made some derived products (slope, aspect, hill) from the Digital Elevation Model for further use, but first let’s to add the projection values to the raster
utm = "+init=epsg:25830"
geo = "+init=epsg:4326"
proj4string(TO)<-utm
sl<-terrain(TO)#slope
as<-terrain(TO,opt="aspect")
hi<-hillShade(sl,as)
Let’s check the four maps
par(mfrow=c(2,2))
plot(TO,col=feli,interpolate=TRUE,legend=FALSE)
plot(sl, col=grey(100:0/100), legend=FALSE, main='TOLEDO')
plot(as,col=grey(100:0/100), legend=FALSE)
plot(hi*-1,col=grey(100:0/100), legend=FALSE)

And now the composite map
plot(sl, col=grey(100:0/100), legend=FALSE, main='TOLEDO')
plot(hi, col=grey(100:0/100), legend=FALSE, alpha=0.3,add=TRUE)
plot(TO,col=feli, legend=TRUE, alpha=0.35,add=TRUE)

Now same thing with rasterVis, first we set the Theme
feliTh<-function (region = feli, ...)
{
theme <- rasterTheme(region = region, ...)
theme
}
In ggplot we can save the graphics for further use
m3<-levelplot(TO,par.settings = feliTh,alpha.regions = 0.35,col.regions = feli)
m2<-levelplot(hi,par.settings=GrTheme,alpha.regions = 0.3,col.regions = gray(0:100/100),panel=panel.levelplot.raster)
m1<-levelplot(sl,par.settings=GrTheme,alpha.regions = 0.3,col.regions = gray(100:0/100))
m1<-levelplot(sl,par.settings = GrTheme,at = seq(-1,0, 0.01),interpolate=TRUE,panel=panel.levelplot.raster,col.regions = gray(100:0/100))
And the final map
par(mfrow=c(1,1))
m0<-m1+m2
m3+as.layer(m0, under = TRUE)

LS0tCnRpdGxlOiAiTWFwYSBjb29sIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpUaGlzIGlzIGEgZG9jdW1lbnQgdG8gc2hvdyBob3cgdG8gbWFrZSBhIGNvb2wgbWFwIGZyb20gYSBEaWdpdGFsIEVsZXZhdGlvbiBNb2RlbCB3aXRoIGJvdGggcmFzdGVyIGFuZCByYXN0ZXJWaXMuCkZpcnN0IHdlIGxvYWQgdGhlIGxpYnJhcmllcwpgYGB7cn0KcmVxdWlyZShyZ2RhbCkKcmVxdWlyZShyYXN0ZXIpCnJlcXVpcmUocmFzdGVyVmlzKQpgYGAKTm93IGxldCdzIGdvIGZvciBhIERFTQpgYGB7cn0KVE88LXJlYWRHREFMKCIvVm9sdW1lcy9lbHRlcmEvVXNlcnMvYWRpZXovRG9jdW1lbnRzL01EVDIwMC1UT0xFRE8taDMwLmFzYyIpClRPPC1yYXN0ZXIoVE8pCmBgYApOZXh0IHN0ZXAsIGJ1aWxkIGEgY29sb3IgcGFsZXR0ZQpgYGB7cn0KI0VsIGF6dWwgZXMgOCwxMjksMjQyICgjMDg4MUYyKSB5IGhhYnLDrWEgcXVlIGHDsWFkaXJsbyBhIGxvcyB2YWxvcmVzIG5lZ2F0aXZvcwpyb2pvPC1jKDE3LDExMywxMTcsMTQ5LDE3OCwyMDIsMjIyLDI0MiwyMzgsMjQyLDIzNCwyMTgsMTk0LDIxNCwyMjYsMjIyLDIzOCwyNTUsMjUwLDI1NSwyNTUsMjU1LDI1NSkKdmVyZGU8LWMoNDgsMTUzLDE3MCwxOTAsMjE0LDIyNiwyMzgsMjM4LDIyMiwyMDYsMTgyLDE1NywxNDEsMTU3LDE3NCwxODYsMTk4LDIwNiwyMTgsMjIyLDIzMCwyNDIsMjU1KQphenVsPC1jKDcsODksMTAxLDExMywxMTcsMTQ5LDE2MSwxNjEsMTUzLDEzMywxMjksMTIxLDEyNSwxNDUsMTY1LDE4MiwyMTAsMjI2LDIzNCwyMzAsMjQyLDI1NSwyNTUpCmZlbGk8LXJnYihyb2pvLHZlcmRlLGF6dWwsbWF4PTI1NSkKYGBgCk5vdyB3ZSBtYWRlIHNvbWUgZGVyaXZlZCBwcm9kdWN0cyAoc2xvcGUsIGFzcGVjdCwgaGlsbCkgZnJvbSB0aGUgRGlnaXRhbCBFbGV2YXRpb24gTW9kZWwgZm9yIGZ1cnRoZXIgdXNlLCBidXQgZmlyc3QgbGV0J3MgdG8gYWRkIHRoZSBwcm9qZWN0aW9uIHZhbHVlcyB0byB0aGUgcmFzdGVyCmBgYHtyfQp1dG0gPSAiK2luaXQ9ZXBzZzoyNTgzMCIKZ2VvID0gIitpbml0PWVwc2c6NDMyNiIKcHJvajRzdHJpbmcoVE8pPC11dG0Kc2w8LXRlcnJhaW4oVE8pI3Nsb3BlCmFzPC10ZXJyYWluKFRPLG9wdD0iYXNwZWN0IikKaGk8LWhpbGxTaGFkZShzbCxhcykKYGBgCkxldCdzIGNoZWNrIHRoZSBmb3VyIG1hcHMKYGBge3IsIGZpZy53aWR0aD01LjYyLCBmaWcuaGVpZ2h0PTMuMDl9CnBhcihtZnJvdz1jKDIsMikpCnBsb3QoVE8sY29sPWZlbGksaW50ZXJwb2xhdGU9VFJVRSxsZWdlbmQ9RkFMU0UpCnBsb3Qoc2wsIGNvbD1ncmV5KDEwMDowLzEwMCksIGxlZ2VuZD1GQUxTRSwgbWFpbj0nVE9MRURPJykKcGxvdChhcyxjb2w9Z3JleSgxMDA6MC8xMDApLCBsZWdlbmQ9RkFMU0UpCnBsb3QoaGkqLTEsY29sPWdyZXkoMTAwOjAvMTAwKSwgbGVnZW5kPUZBTFNFKQpgYGAKQW5kIG5vdyB0aGUgY29tcG9zaXRlIG1hcApgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTYuMTh9CnBsb3Qoc2wsIGNvbD1ncmV5KDEwMDowLzEwMCksIGxlZ2VuZD1GQUxTRSwgbWFpbj0nVE9MRURPJykKcGxvdChoaSwgY29sPWdyZXkoMTAwOjAvMTAwKSwgbGVnZW5kPUZBTFNFLCBhbHBoYT0wLjMsYWRkPVRSVUUpCnBsb3QoVE8sY29sPWZlbGksIGxlZ2VuZD1UUlVFLCBhbHBoYT0wLjM1LGFkZD1UUlVFKQpgYGAKCk5vdyBzYW1lIHRoaW5nIHdpdGggcmFzdGVyVmlzLCBmaXJzdCB3ZSBzZXQgdGhlIFRoZW1lCmBgYHtyfQpmZWxpVGg8LWZ1bmN0aW9uIChyZWdpb24gPSBmZWxpLCAuLi4pIAp7CiAgICB0aGVtZSA8LSByYXN0ZXJUaGVtZShyZWdpb24gPSByZWdpb24sIC4uLikKICAgIHRoZW1lCn0KYGBgCkluIGdncGxvdCB3ZSBjYW4gc2F2ZSB0aGUgZ3JhcGhpY3MgZm9yIGZ1cnRoZXIgdXNlCmBgYHtyfQptMzwtbGV2ZWxwbG90KFRPLHBhci5zZXR0aW5ncyA9IGZlbGlUaCxhbHBoYS5yZWdpb25zID0gMC4zNSxjb2wucmVnaW9ucyA9IGZlbGkpCm0yPC1sZXZlbHBsb3QoaGkscGFyLnNldHRpbmdzPUdyVGhlbWUsYWxwaGEucmVnaW9ucyA9IDAuMyxjb2wucmVnaW9ucyA9IGdyYXkoMDoxMDAvMTAwKSxwYW5lbD1wYW5lbC5sZXZlbHBsb3QucmFzdGVyKQptMTwtbGV2ZWxwbG90KHNsLHBhci5zZXR0aW5ncz1HclRoZW1lLGFscGhhLnJlZ2lvbnMgPSAwLjMsY29sLnJlZ2lvbnMgPSBncmF5KDEwMDowLzEwMCkpCm0xPC1sZXZlbHBsb3Qoc2wscGFyLnNldHRpbmdzID0gR3JUaGVtZSxhdCA9IHNlcSgtMSwwLCAwLjAxKSxpbnRlcnBvbGF0ZT1UUlVFLHBhbmVsPXBhbmVsLmxldmVscGxvdC5yYXN0ZXIsY29sLnJlZ2lvbnMgPSBncmF5KDEwMDowLzEwMCkpCgpgYGAKQW5kIHRoZSBmaW5hbCBtYXAKYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD0xMn0KcGFyKG1mcm93PWMoMSwxKSkKbTA8LW0xK20yCm0zK2FzLmxheWVyKG0wLCB1bmRlciA9IFRSVUUpCgpgYGAKCg==