5  Map Projections

Map projections exist because we are trying to take the round globe of the earth, and project it onto a 2 dimensional surface. Because a spherical globe can not be projected onto a flat surface without some distortion, different projections make different choices about the kind of distortion involved.

A Globe And A Flat Map

Note

This chapter is mostly a conceptual overview, and not code-focused. However, the code is provided for the sake of transparency and teaching. It is not necessary to understand the code here. But I learned a lot from: https://plotly.com/r/#maps.

5.1 Set Up The Map

5.2 Call plotly Library

Show the code
library(plotly)

5.3 A Basic Map

Show the code
# a very basic map could be created with: 

library(plotly)

mymap0 <- plot_geo() # create basic map; read into mymap0

mymap0 # replay

5.4 A More Advanced Map

Note

Again, it is not necessary to understand the code to understand the conceptual ideas of this chapter. The code below–especially the first code chunk–is admittedly a little complicated, mostly because I added options to get the map to look exactly the way that I wanted.

Show the code
mymap <- plot_geo() %>%
  layout(title = "Demonstration Map", 
         geo = list(showland = TRUE, # show land
                    landcolor = toRGB("darkgrey"), # land color
                    showcountries = TRUE, # show countries
                    showocean = FALSE, # show ocean
                    oceancolor = "lightblue", # ocean color
                    lataxis = list(showgrid = TRUE, # latitude options
                                   gridcolor = toRGB("grey")),
                    lonaxis = list(showgrid = TRUE, # longitude options
                                   gridcolor = toRGB("grey")))) 

mymap # replay

5.5 Map Projections

5.5.1 Globe (Orthographic)

An orthographic projection reprsents the globe with 3 dimensional accuracy.

Show the code
mymap %>% 
  layout(geo = list(projection = list(type = 'orthographic')))

5.5.2 Mercator

A Mercator projection reprsents the earth with perpendicular latitude and longitude. This projection can be helpful in some kinds of navigation, but areas of landmasses are distorted, especially as one approaches the poles.

Show the code
mymap %>% 
  layout(geo=list(projection = list(type = 'mercator')))

5.5.3 Mollweide

The Mollweide projection is an equal area projection. As a consequence, latitude and longitude lines are not perpendicular, and the shapes of some landmasses may appear to be distorted.

Show the code
mymap %>% 
  layout(geo=list(projection = list(type = 'mollweide')))

5.5.4 Robinson

The Robinson projection is an attempt to compromise between equal areas and a natural looking map.

Show the code
mymap %>% 
  layout(geo=list(projection = list(type = 'robinson')))