#Mapas en ggplot Introducción Un mapa es una representación gráfica simplificada de un territorio con propiedades métricas sobre una superficie bidimensional * Sirve para visualizar info que varía o se distribuye a lo largo del espacio * Toma en cuenta si el mapa es la opición más óptima para visualizar datos. Preguntate: ¿qué quiero decir con mi visualización? luego decide la mejor forma de mostrar la info
Información geográfica Info que tiene algún componente espacial; ubicación e info atributiva que detalle más sobre el elemento en cuestión. * COMPONENTE ESPACIAL + ATRIBUTOS * Componente espacial: puntos, líneas, áreas, matrices de pixeles, polígonos * Información vectorial: puntos, líneas o polígonos * Información raster: matrices de puntos * Atributos: nombres de calles, precios, población, índices, estadísticas de un lugar * Capas: herramientas de trabajo que se asemeja a las hojas apiladas de acetato * las capas se modifican de manera individual, y al final se juntan * CRS: sistema de coordenadas de referencia – sistema de coordenadas que se usa para localizar entidades geográficas. Debe incluir 1. proyección geográfica 2. un punto de referencia 3. un sistema de traducción a otro crs 4. un datum o elipsoide de referencia sistema 4326 es el más común, sistema de latitud-longitud
La info geográfica se almacena en archivos especiales. Los más comunes son: * ESRI * JSON, GeoJSON, TopoJSON * KML – no tan recomendable * EXCEL * TIFF - se abren con la librería raster en R
CLAVES DE INEGI * números que identifican a un estado, municipio, comunidad, colonia, manzana en particular * Estas claves funcionan como el id de un polígono, y son importantes como variables llave para pegar bases de datos de atributos con bases de datos geográficas
# Librerias ----
# Si no tienes alguna, instálala
library(tidyverse)
library(sf)
library(viridis)
library(plotly)
# 1. Leer las bases de datos ----
# Geometrías
# Acá lo tuve que cambiar a la ruta en internet.
# Si quieres hacerle como en el video, descarga el archivo para tenerlo localmente
# Desde este enlace: https://github.com/JuveCampos/periodismoDeDatos2021/raw/main/Sesión%2004%20-%20Mapas%20en%20Ggplot/Ejercicio%20práctico%20Clase%2004%20-%20Mapas/01_Datos/mpios.geojson
# Y guardalo en tu carpeta 01_Datos
mpios <- st_read("Ejercicio práctico Clase 04 - Mapas/01_Datos/mpios.geojson") %>%
select(-c(COV_, COV_ID))
## Reading layer `mpios_con_menos_islas_aun' from data source
## `/Users/sandymartinez/Documents/R/notas/Periodismo/Clase_periodismo/02_código/Ejercicio práctico Clase 04 - Mapas/01_Datos/mpios.geojson'
## using driver `GeoJSON'
## Simple feature collection with 2465 features and 9 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -118.3651 ymin: 14.5321 xmax: -86.71041 ymax: 32.71865
## Geodetic CRS: WGS 84
# Los objetos tipo "sf" son los que almacenan las geometrías
class(mpios)
## [1] "sf" "data.frame"
# Verificamos las geometrias (tarda un poco)
plot(mpios, max.plot = 1)
# Leemos los Atributos
idh <- read_csv("Ejercicio práctico Clase 04 - Mapas/01_Datos/Indice de Desarrollo Humano.csv") %>%
filter(Year == 2015)
# Vemos los años de los datos (exploración)
unique(idh$Year)
## [1] 2015
# Variables para hacer el merge
# idh = CODGEO
# mpios = CVEGEO
# FUNCIONES PARA JUNTAR TABLAS
# merge()
# right_join() (hay mas! Checa: https://rpubs.com/Juve_Campos/juntando_tablas)
# 1. Juntando tablas usando merge
map <- merge(x = mpios,
y = idh,
by.x = "CVEGEO",
by.y = "CODGEO",
all.x = TRUE)
# o tambien: 2. Juntando tablas usando right_join()
mapa <- right_join(mpios, idh,
c("CVEGEO" = "CODGEO"))
# Ambas tablas son lo mismo
# Creamos la lista de estados
estados <- unique(map$NOM_ENT)
# Vemos toda la lista de estados
estados
## [1] "Aguascalientes" "Baja California"
## [3] "Baja California Sur" "Campeche"
## [5] "Coahuila de Zaragoza" "Colima"
## [7] "Chiapas" "Chihuahua"
## [9] "Ciudad de México" "Durango"
## [11] "Guanajuato" "Guerrero"
## [13] "Hidalgo" "Jalisco"
## [15] "México" "Michoacán de Ocampo"
## [17] "Morelos" "Nayarit"
## [19] "Nuevo León" "Oaxaca"
## [21] "Puebla" "Querétaro"
## [23] "Quintana Roo" "San Luis Potosí"
## [25] "Sinaloa" "Sonora"
## [27] "Tabasco" "Tamaulipas"
## [29] "Tlaxcala" "Veracruz de Ignacio de la Llave"
## [31] "Yucatán" "Zacatecas"
# Seleccionamos un estado (ponle tu estado para probar)
estado_seleccionado <- "Morelos"
# Nos quedamos con solo la geometría del estado
map_estado <- map %>%
filter(NOM_ENT == estado_seleccionado)
# Corroboramos
plot(map_estado, max.plot = 1)
# Visualizacion de datos ----
# Hacemos el mapa
mapx <- map_estado %>%
# Declaramos los elementos estéticos
ggplot(aes(fill = Valor)) +
# Generamos el mapa (y ponemos los perimetros en blanco)
geom_sf(color = "gray90") +
# Cambiamos los colores del relleno
scale_fill_gradientn(colors = viridis(begin = 0,
end = 1,
n = 10)
# # Si quieres que los valores de la escala vayan de 0 a 1
# , limits = c(0,1)
) +
# Otro ejemplo de paletas, por si viridis se te hace muy compleja :P
# Silencia la anterior y corre esta:
# scale_fill_gradientn(colors = c("red", "orange", "yellow", "green")) +
labs(title = "Indice de desarrollo humano (IDH)", # Título
subtitle = "Año 2015", # Subtitulo
fill = "Valor del IDH", # Nombre de la escala
caption = "Fuente: Informe de Desarrollo Humano Municipal 2010-2015.\nTransformando México Desde lo Local" # Pie de pagina
) +
# Subir y centrar el titulo de la barra
guides(fill = guide_colorbar(title.position = "top", title.hjust = 0.5)) +
# Modificar el tema de la gráfica
theme(plot.title = element_text(hjust = 0.5,
color = "gray10",
face = "bold"),
plot.subtitle = element_text(hjust = 0.5,
color = "gray50",
face = "bold"),
plot.caption = element_text(hjust = 1),
axis.text = element_blank(),
axis.ticks = element_blank(),
panel.background = element_blank(),
legend.position = "bottom"
)
# Ver el mapa:
mapx
# Convertir a mapa interactivo:
plotly::ggplotly(mapx)
# Guardar imagenes en ggplot (Ojo, esto funciona porque
# tengo una carpeta 03_Lecturas en mi directorio).
#ggsave(str_c("03_Lectura/mapa_",estado_seleccionado,".png"),
# width = 10,
#height = 6)
# Si no especificas W y H, se va a guardar con la proporción de la
# ventana de tu Viewer.
# Hacemos los demás mapas en bucle
for (estado_seleccionado in estados){
map_estado <- map %>%
filter(NOM_ENT == estado_seleccionado)
plot(map_estado, max.plot = 1)
# Visualizacion de datos ----
mapx <- ggplot(map_estado,
aes(fill = Valor)) +
geom_sf(color = "gray90") +
scale_fill_gradientn(colors = viridis(begin = 0,
end = 1,
n = 10)) +
labs(title = "Indice de desarrollo humano (IDH)",
subtitle = "Año 2015",
fill = "Valor del IDH",
caption = "Fuente: Informe de Desarrollo Humano Municipal 2010-2015.\nTransformando México Desde lo Local"
) +
guides(fill = guide_colorbar(title.position = "top", title.hjust = 0.5)) +
theme(plot.title = element_text(hjust = 0.5,
color = "gray10",
face = "bold"),
plot.subtitle = element_text(hjust = 0.5,
color = "gray50",
face = "bold"),
plot.caption = element_text(hjust = 1),
axis.text = element_blank(),
axis.ticks = element_blank(),
panel.background = element_blank(),
legend.position = "bottom"
)
# Convertir a mapa interactivo
plotly::ggplotly(mapx)
# Guardar imagenes en ggplot
# ggsave(str_c("03_Lectura/mapa_",estado_seleccionado,".png"),
# width = 10,
# height = 6)
print(str_c("Ya imprimí el estado ", estado_seleccionado))
}
## [1] "Ya imprimí el estado Aguascalientes"
## [1] "Ya imprimí el estado Baja California"
## [1] "Ya imprimí el estado Baja California Sur"
## [1] "Ya imprimí el estado Campeche"
## [1] "Ya imprimí el estado Coahuila de Zaragoza"
## [1] "Ya imprimí el estado Colima"
## [1] "Ya imprimí el estado Chiapas"
## [1] "Ya imprimí el estado Chihuahua"
## [1] "Ya imprimí el estado Ciudad de México"
## [1] "Ya imprimí el estado Durango"
## [1] "Ya imprimí el estado Guanajuato"
## [1] "Ya imprimí el estado Guerrero"
## [1] "Ya imprimí el estado Hidalgo"
## [1] "Ya imprimí el estado Jalisco"
## [1] "Ya imprimí el estado México"
## [1] "Ya imprimí el estado Michoacán de Ocampo"
## [1] "Ya imprimí el estado Morelos"
## [1] "Ya imprimí el estado Nayarit"
## [1] "Ya imprimí el estado Nuevo León"
## [1] "Ya imprimí el estado Oaxaca"
## [1] "Ya imprimí el estado Puebla"
## [1] "Ya imprimí el estado Querétaro"
## [1] "Ya imprimí el estado Quintana Roo"
## [1] "Ya imprimí el estado San Luis Potosí"
## [1] "Ya imprimí el estado Sinaloa"
## [1] "Ya imprimí el estado Sonora"
## [1] "Ya imprimí el estado Tabasco"
## [1] "Ya imprimí el estado Tamaulipas"
## [1] "Ya imprimí el estado Tlaxcala"
## [1] "Ya imprimí el estado Veracruz de Ignacio de la Llave"
## [1] "Ya imprimí el estado Yucatán"
## [1] "Ya imprimí el estado Zacatecas"