Given the code, map and sample data below:
instead of plotting names of watersheds etc on the map,how can I produce a seperate legend using ggplot2or levelplot just like one will do using ArcGIS? Basically, I will like to produce the legend shown on this map
preferably with levelplotor ggplot2.
Code and map are included as well as sample data for plotting in R.
require(colorRamps)
require(raster)
require(rasterVis)
require(mapproj)
library(raster)
library(proj4)
# Get province borders and project it to same CRS than raster
can1 <- getData('GADM', country="CAN", level=1)
getData('ISO3') # country name
dem=getData('alt', country='CAN', mask=TRUE)
require( colorRamps )
my.at <- unique(round(seq(ceiling(5800), floor(1), length.out = 51),0))#at: numeric vector specifying where the colors change. must be of length 1 more than the col vector.
myColorkey <- list(at=my.at,space = "bottom", tck = c(0,0),## where the colors change
labels=list(axis.line = list(col = NA),at=myat1,rot=0,cex=1.4,font=1,
fontface=1),height=0.99,width=1.8)
col<-colorRampPalette(c("#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"))
levelplot(dem,maxpixel=ncell(dem),panel=panel.levelplot.raster,names.attr=names(dem),
interpolate=F,margin=FALSE,xlab=list(label="Longitude",cex=1.5),yscale.components = yscale.raster.subticks,
xscale.components = xscale.raster.subticks,
ylab=list(label="Latitude",cex=1.5),
par.strip.text=list(cex=1),xlim=c(-158, -48.99485),
ylim=c(38.00513, 85),col.regions=col,at = seq(0, 5800,100),
colorkey = list(space = "bottom", labels = list(at = seq(0, 5800,800), rot=0,cex=1.1,font=6,fontface=1,
labels =c("0", "800", "1600", "2400", "3200", "4000", "4800", "5600")),
height=0.99,width=1.8,tck = c(0,0)),
par.settings=list(panel.background=list(col="white"),axis.line=list(lwd=1.9), strip.border=list(lwd=1.9),layout.heights=list(xlab.key.padding=-0.2)),
cex=0.8, scales = list(x=list(draw=TRUE,cex=1.2), y=list(draw=TRUE,cex=1.2)))+
layer(sp.polygons(can1,lwd=0.5,col="gray40"))+
layer(sp.polygons(watershed,lwd=1,col=c("#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00"),
fill=c("#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00")))+
layer(sp.polygons(lake,lwd=1,col="cadetblue1",fill="cadetblue1"))+
layer(sp.lines(river,lwd=0.5,col="blue4"))+
layer(sp.text(coordinates(watershed), txt = watershed$NAMRB_EN, pos =c(1,1,3,3,1,4,1,1),col="black",font=list(face="bold"),cex=0.8))
