The relevant libraries are: maps, ggplot2, ggmap, and maptools. Make sure you install them.
The Problem
Let's take a fairly simple use case: We have a few points on the globe (say Cities) that we want to mark on the map.The ideal and natural choice for this would be David Kahle's ggmap package. Except that there is a catch. ggmap doesn't handle extreme latitudes very well. If you are really keen on using ggmap, you can do it by following the technique outlined in this StackOverflow response.
If ggmap is not mandatory, there are simpler ways to do the same.
First, let's set up our problem. We'll take 5 cities and plot them on a world map.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library("ggmap") | |
library(maptools) | |
library(maps) | |
visited <- c("SFO", "Chennai", "London", "Melbourne", "Johannesbury, SA") | |
ll.visited <- geocode(visited) | |
visit.x <- ll.visited$lon | |
visit.y <- ll.visited$lat | |
#> dput(visit.x) | |
#c(-122.389979, 80.249583, -0.1198244, 144.96328, 28.06084) | |
#> dput(visit.y) | |
#c(37.615223, 13.060422, 51.5112139, -37.814107, -26.1319199) |
Method 1: Using the maps Package
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#USING MAPS | |
map("world", fill=TRUE, col="white", bg="lightblue", ylim=c(-60, 90), mar=c(0,0,0,0)) | |
points(visit.x,visit.y, col="red", pch=16) |
This results in:
Which might be enough. However, if you take the few extra steps to plot using ggplot, you will have much greater control for what you want to do subsequently.
Method 2: Plotting on a World Map using ggplot
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Using GGPLOT, plot the Base World Map | |
mp <- NULL | |
mapWorld <- borders("world", colour="gray50", fill="gray50") # create a layer of borders | |
mp <- ggplot() + mapWorld | |
#Now Layer the cities on top | |
mp <- mp+ geom_point(aes(x=visit.x, y=visit.y) ,color="blue", size=3) | |
mp |