Response: We can create maps using geom_map() function and using expand_limits which takes longitude and latitude parameters of a data frame. Geom_map is a pure annotation, so does not affect position scales. We take an example of USArrests dataset in R. This data set contains statistics, in arrests per 100,000 residents for assault, murder, and rape in each of the 50 US states in 1973. Also given is the percent of the population living in urban areas. We would like to first create a data frame with the information required to be plotted in a map by states of the US.  And then we use the geom_map() function to take map_id as state and expand limits using GPS coordinates to show the state-wise distribution of the data. This is as follows. data <- data.frame(murder=USArrests$Murder,state=tolower(rownames(USArrests))) map <- map_data("state") k <- ggplot(data,aes(fill=murder)) k+geom_map(aes(map_id=state),map = map)+expand_limits(x=map$long,y=map$lat)