title: Custom legend for lattice levelplot or ggplot2 map R
body: <p>Given the <code>code</code>, <code>map</code> and <a href="https://drive.google.com/open?id=1zlO3UqIZOGHB-cEwO7mO_wnwVWx3d_5e" rel="nofollow noreferrer">sample data</a> below:
  instead of plotting names of <code>watersheds</code> etc on the map,how can I produce a seperate legend using <code>ggplot2</code>or <code>levelplot</code> just like one will do using <code>ArcGIS?</code> Basically, I will like to produce the legend shown on this map <a href="https://i.stack.imgur.com/6ZwRL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6ZwRL.png" alt="enter image description here"></a>preferably with <code>levelplot</code>or <code>ggplot2</code>.</p>
  
  <p><code>Code</code> and <code>map</code> are included as well as sample data for plotting in <code>R</code>.</p>
  
  <pre><code>require(colorRamps)
  require(raster)
  require(rasterVis)
  require(mapproj)
  library(raster)    
  library(proj4)
  
  
  # Get province borders and project it to same CRS than raster
  can1 &lt;- getData('GADM', country="CAN", level=1)
  getData('ISO3') # country name
  dem=getData('alt', country='CAN', mask=TRUE)
  
  
  require( colorRamps )
  my.at &lt;- 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 &lt;- 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&lt;-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))
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/tw11o.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/tw11o.png" alt="Figure 1"></a></p>