Here's some mock code to go along with my problem:
#read in libraries
library(ggmap)
library(sp)
library(raster)
library(ggplot2)
#read in country shapefile, project, fortify for mapping with ggplot
tz <- getData('GADM', country = "TZA", level = 1)
tz.prj <- spTransform(tz, CRS("+proj=longlat +datum=WGS84 +no_defs"))
tz <- fortify(tz.prj)
#create dummy data frame
lon <- c(36.68299, 36.66667, 31.80501, 33.87462, 35.75161,
32.23135, 39.20833, 36.68173, 39.26093)
lat <- c(-3.386925, -3.216667, -1.329641, -2.018532, -6.162959,
-2.885038, -6.792354, -8.139894, -6.822502)
tz.c <- data.frame(lon, lat)
#plot
ggplot() + geom_polygon(data = tz.prj,
aes(long, lat, group = group),
fill = "#f1f4c7",
color = "#afb38a") +
geom_point(data = tz.c,
aes(lon, lat),
pch = 21,
color = "black",
bg = "red") +
coord_equal()
I want my legend to include the red dots from geom_point
to define what they are (let's just say hospitals for this example). While my country outline is a solid color right now, it will eventually be symbolized in some other way with the hospital points on top of it, so I'd like to include all legend items in my legend.
I did some searching and found that in order to use show.legend = TRUE
with geom_point
, you have to plot everything within aes()
. When I try to do this, it gives me the error: Error: A continuous variable can not be mapped to shape.
I converted my lat and lon to factors to try to quell this issue to no avail. So, how do I work with this data so that I can plot it to look the same as the image I've provided while also being able to plot/define the legend?