Is it possible to place the spplot (spplot polygons) legend within the map, in lower left corner, like this?
The closest I've been able to get is this (I am not posting my data, I just use the example data instead, so in this case, try to place the legend in top left part of the map):
data(meuse.grid)
gridded(meuse.grid)=~x+y
spplot(meuse.grid[,'dist'],
colorkey = list(space = "left", height = 0.5)
)
But the legend is in the middle of the page and is outside of the map. Unfortunatelly, colorkey
argument doesn't support "bottomleft", or x, y, or corner arguments (see ?levelplot
). I also tried to use key.space
argument, but it seems to only work when plotting SpatialPoints*
but it seems ignored for SpatialPolygons*
(or SpatialPixelsDataFrame like in the example above).
Since the key is a grob of its own it is perfectly possible to extract it from the plot object and draw it separately where ever you please.
library(grid)
# Separate plot and key
s <- spplot(meuse.grid[,'dist'],
colorkey = list(space = "left", height = 0.5)
)
key <- draw.colorkey(s$legend[[1]]$args$key)
s$legend <- NULL # Otherwise we'd get two keys
# Modify key
key$framevp$x <- unit(0.15, "npc")
key$framevp$y <- unit(0.68, "npc")
# Plot
s
grid.draw(key)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With