Search code examples
rrastertmap

plot hillshade in tmap


I would like to plot a raster with hillshading and add layers with tmap.

library(raster)
alt = getData('alt', country='CHE')
slope = terrain(alt, opt='slope')
aspect = terrain(alt, opt='aspect')
hill = hillShade(slope, aspect, 40, 270)
plot(hill, col=grey(0:100/100), legend=FALSE, main='Switzerland')
plot(alt, col=rainbow(25, alpha=0.35), add=TRUE)

enter image description here

I would like to overlay roads etc. using tmap. How to make this work?

library(tmap)
tm_shape(hill) + tm_raster() + tm_shape(alt) + tm_raster()

is the same as

tm_shape(alt) + tm_raster()

The tm_shape(hill) + tm_raster() part gives warning message:

Variable "layer" contains positive and negative values, so midpoint is set to 0. Set midpoint = NA to show the full spectrum of the color palette.

Solution

  • library(tmap)  
    tm_shape(hill) +
     tm_raster(palette = gray(0:100 / 100), n = 100, legend.show = FALSE)  +
      tm_shape(alt) +
      tm_raster(alpha = 0.5, palette = terrain.colors(25),
                legend.show = FALSE)
    

    Thanks to Nowosad on the tmap github page.