Mapa básico (ggmap)

En este apartado aprenderemos a colocar información en un mapa a partir de los conceptos que hemos aprendido en la asignatura. Necesitaremos:

Principalmente en estos ejercicios trabajaremos con el paquete ggmap, pero también con otros paquetes que cargamos a continuación.

#recordad que los paquetes deben de estar previamente instalados 
library(dplyr)
library(ggplot2)
library(ggmap)

El mapa

Dentro del paquete ggmap, utilizaremos la función get_stamenmap() para acceder a los mapas. Dentro de la función indicaremos:

  • Los límites del mapa.
  • La resolución con zoom.
  • El tipo de mapa que queremos visualizar con maptype. Hemos escogido terrain-background como opción por defecto. Consultad otro tipo de mapa con: ?get_stamenmap.
# Con la función get_stamenmap, marcamos los límites del mapa
mapa_sicilia <- get_stamenmap(bbox = c(left = 12.450726,
                                       bottom = 36.717078,
                                       right = 15.376409,
                                       top = 38.228851),
                                       zoom = 9, #marcamos la resolución del mapa 
                                       maptype = "terrain-background")

En este caso, hemos introducido las coordenadas de la isla de Sicilia:

ggmap(mapa_sicilia) #Ya podemos hacer una primera visualización del mapa

Ejercicio 1: Definid la visualización de un mapa donde figure un país.

  • Podemos obtener fácilmente las coordenadas clicando en un punto del mapa en Google Maps. Si hacéis clic de forma sostenida os aparecerá la información de la longitud y la latitud.
  • Cambiad el tipo de mapa. Por ejemplo, “watercolor” o “toner-hybrid.” Podéis consultar todos a ?get_stamenmap.

CUIDADO CON EL ZOOM!: Empieza primero con una resolución baja (por ejemplo, zoom = 6) para asegurarte de que no estés cargando un mapa con demasiada resolución. Después aumenta la resolución a 7, 8, 9 … para ir ganando nitidez. Cuanto más resolución, más lento irá tu ordenador al cargar el mapa.

Las coordenadas

Combinando los paquetes ggmap y ggplot2 podemos representar un punto sobre el mapa. Definiremos las coordenadas (x, y) del punto y el color y el tamaño del punto.

#Poner un punto en el mapa es así de fácil
ggmap(mapa_sicilia) +
  geom_point(aes(x = 13.56, y = 37.4034), #probad de cambiarlo por otras coordenadas
             col = "red", size = 2) #probad de cambiar el color y el tamaño del punto

Ejercicio 2: Utilizando el mapa creado anteriormente de un país, introduce un punto en el mapa. Cambia el color y el tamaño.

El marco de datos

Para vincular un marco de datos en el mapa, tendremos que seguir la estructura que vemos a continuación:

  1. En objeto_mapa indicamos el objeto que hemos definido como mapa.
  2. En longitud y latitud indicamos las coordenadas.
  3. En df indicamos el nombre del marco de datos.
  4. Finalmente, indicaremos geom_point() con los argumentos correspondientes dentro como el color, el tamaño, etc.

AVISO! Este código es un ejemplo no reproducible.

ggmap(objeto_mapa, #objeto que lleva la información del mapa
      base_layer = ggplot(aes(x = longitud, y = latitud), #nombre que toman x e y en el marco de datos 
                          data = df)) + #nombre del marco de datos
      geom_point(propiedades del punto) #geometría

A continuación definiremos el marco de datos. Para ello, podemos utilizar funciones como tribble() o data.frame(). Introduciremos:

  • Cuatro columnas, dos correspondientes a las coordenadas y dos correspondientes a los atributos (localización y número de habitantes).
  • Tres observaciones, correspondientes a tres localizaciones.
  • Con la función tribble(), tendremos que indicar primero las columnas con el símbolo ~ antes de cada nombre. A continuación, indicaremos los valores de cada observación, todo separado por comas.
#Creamos un marco de datos con la función tribble
sic_data <- tribble(~lon,  ~lat,    ~localizacion,   ~habitantes,
                    13.300021, 37.812647, "Corleone", 11387,
                    13.377162, 37.679849, "Palazzo Adriano", 2332,
                    13.361078, 38.127448, "Palermo", 1483471 )
sic_data #Visualizamos el marco de datos
## # A tibble: 3 x 4
##     lon   lat localizacion    habitantes
##   <dbl> <dbl> <chr>                <dbl>
## 1  13.3  37.8 Corleone             11387
## 2  13.4  37.7 Palazzo Adriano       2332
## 3  13.4  38.1 Palermo            1483471

Todo junto

Finalmente, siguiendo el patrón establecido previamente, introducimos los elementos que necesitamos:

  • El nombre del mapa mapa_sicilia.
  • En nombre que hemos dado a las coordenadas: lon para las x y lat para las y
  • El nombre del marco de datos: sic_data.
  • Las geometrías con sus argumentos.
    • Con geom_point() indicamos que el color del punto varíe según el lugar y que el tamaño del punto varíe según el número de habitantes.
    • Con geom_text() hemos situado una etiqueta de texto para ver el nombre de cada lugar.
ggmap(mapa_sicilia,
      base_layer = ggplot(aes(x = lon, y = lat),
                          data = sic_data)) +
  geom_point(aes(col = localizacion, size = habitantes), show.legend = FALSE) +
  geom_text(aes(label = localizacion), fontface = "bold", 
            size = 3, vjust = -.8)

EJERCICIO FINAL: Construye un mapa de un territorio concreto del mundo y crea un marco de datos con cuatro observaciones y dos atributos. Los atributos deben estar basados en datos reales (deberás de indicar la fuente donde has obtenido los datos). Crea una visualización que permita observar los dos atributos de las cuatro observaciones.

Next