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 escogidoterrain-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
.
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
El marco de datos
Para vincular un marco de datos en el mapa, tendremos que seguir la estructura que vemos a continuación:
- En
objeto_mapa
indicamos el objeto que hemos definido como mapa. - En
longitud
ylatitud
indicamos las coordenadas. - En
df
indicamos el nombre del marco de datos. - 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 × 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 lasx
ylat
para lasy
- 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.
- Con
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)