Reporte de Mapas Interactivos

Introducción a los Mapas

Esta es una plantilla especializada para reportes con mapas interactivos usando Leaflet. Los mapas son completamente responsivos y se adaptan tanto a dispositivos móviles como a navegadores de escritorio.

Características del Reporte

Este template incluye:

  • Mapas interactivos con Leaflet
  • Diseño responsivo para móviles
  • Recuadros destacados con estilo morado
  • Integración con datos geoespaciales

¿Qué es Leaflet?

Leaflet es una librería de JavaScript de código abierto para mapas interactivos optimizada para móviles. En R, la librería leaflet nos permite crear mapas interactivos de alta calidad que se integran perfectamente con R Markdown.

Ventajas principales: - Mapas totalmente interactivos (zoom, pan, popup) - Compatibilidad móvil excelente - Múltiples capas de mapas base - Soporte para marcadores, polígonos y líneas

Mapa Básico de México

# Crear mapa centrado en México
mapa_mexico <- leaflet() %>%
  addTiles() %>%  # Agregar mapa base de OpenStreetMap
  setView(lng = -102.5528, lat = 23.6345, zoom = 5) %>%  # Centrar en México
  addMarkers(lng = -99.1332, lat = 19.4326, 
             popup = "<b>Ciudad de México</b><br/>Capital de México") %>%
  addMarkers(lng = -103.3496, lat = 20.6597, 
             popup = "<b>Guadalajara</b><br/>Perla Tapatía") %>%
  addMarkers(lng = -100.3161, lat = 25.6866, 
             popup = "<b>Monterrey</b><br/>Sultana del Norte")

mapa_mexico

Mapa con Marcadores Personalizados

Ciudades Principales de México

El siguiente mapa muestra las principales ciudades de México con marcadores personalizados y información detallada en los popups.

# Datos de ciudades mexicanas
ciudades <- data.frame(
  ciudad = c("CDMX", "Guadalajara", "Monterrey", "Puebla", "Tijuana", "León", "Juárez"),
  lat = c(19.4326, 20.6597, 25.6866, 19.0414, 32.5027, 21.1619, 31.6904),
  lng = c(-99.1332, -103.3496, -100.3161, -98.2063, -117.0024, -101.6957, -106.4245),
  poblacion = c(9209944, 1385629, 1135512, 1692181, 1641570, 1238962, 1391180),
  estado = c("CDMX", "Jalisco", "Nuevo León", "Puebla", "Baja California", "Guanajuato", "Chihuahua")
)

# Crear íconos personalizados
iconos_morados <- makeIcon(
  iconUrl = "https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-violet.png",
  shadowUrl = "https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png",
  iconWidth = 25, iconHeight = 41,
  iconAnchorX = 12, iconAnchorY = 41,
  shadowWidth = 41, shadowHeight = 41
)

# Crear mapa con marcadores personalizados
mapa_ciudades <- leaflet(ciudades) %>%
  addTiles() %>%
  addProviderTiles(providers$CartoDB.Positron) %>%  # Mapa base limpio
  setView(lng = -102.5528, lat = 23.6345, zoom = 5) %>%
  addMarkers(~lng, ~lat, 
             icon = iconos_morados,
             popup = ~paste("<b>", ciudad, "</b><br/>",
                           "Estado: ", estado, "<br/>",
                           "Población: ", format(poblacion, big.mark = ","), " habitantes"),
             label = ~paste(ciudad, "-", estado))

mapa_ciudades

Mapa con Capas y Controles

# Crear mapa con múltiples capas
mapa_capas <- leaflet(ciudades) %>%
  # Agregar diferentes mapas base
  addTiles(group = "OpenStreetMap") %>%
  addProviderTiles(providers$CartoDB.Positron, group = "CartoDB") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Satélite") %>%
  
  # Configurar vista inicial
  setView(lng = -102.5528, lat = 23.6345, zoom = 5) %>%
  
  # Agregar marcadores con círculos proporcionales a la población
  addCircleMarkers(~lng, ~lat,
                   radius = ~sqrt(poblacion)/1000,
                   color = "#8e24aa",
                   stroke = TRUE,
                   fillOpacity = 0.7,
                   popup = ~paste("<b>", ciudad, "</b><br/>",
                                 "Estado: ", estado, "<br/>",
                                 "Población: ", format(poblacion, big.mark = ","), " habitantes"),
                   group = "Población") %>%
  
  # Agregar marcadores normales
  addMarkers(~lng, ~lat,
             icon = iconos_morados,
             popup = ~paste("<b>", ciudad, "</b><br/>",
                           "Estado: ", estado),
             group = "Marcadores") %>%
  
  # Agregar controles de capas
  addLayersControl(
    baseGroups = c("OpenStreetMap", "CartoDB", "Satélite"),
    overlayGroups = c("Población", "Marcadores"),
    options = layersControlOptions(collapsed = FALSE)
  ) %>%
  
  # Ocultar marcadores por defecto, mostrar solo círculos
  hideGroup("Marcadores")

mapa_capas

Análisis Geoespacial

Distribución Poblacional

Los círculos en el mapa representan la población de cada ciudad de manera proporcional. Se puede observar que:

  1. Ciudad de México es claramente la más poblada
  2. Guadalajara y Monterrey son los siguientes centros urbanos importantes
  3. La distribución poblacional muestra concentración en el centro y norte del país

Tabla Interactiva de Datos

# Crear tabla interactiva con DT (versión simplificada)
DT::datatable(
  ciudades,
  caption = "Principales Ciudades de México",
  options = list(
    pageLength = 10,
    scrollX = TRUE
  ),
  colnames = c("Ciudad", "Latitud", "Longitud", "Población", "Estado")
) %>%
  DT::formatCurrency("poblacion", currency = "", interval = 3, mark = ",", digits = 0)

Mapa de Calor

# Simular datos de temperatura para el mapa de calor
library(dplyr)
set.seed(123)
puntos_calor <- data.frame(
  lat = runif(100, 14.5, 32.7),  # Latitudes de México
  lng = runif(100, -118.4, -86.7),  # Longitudes de México
  temperatura = round(rnorm(100, 25, 8), 1)  # Temperaturas simuladas
)

# Crear mapa de calor
mapa_calor <- leaflet(puntos_calor) %>%
  addTiles() %>%
  addProviderTiles(providers$CartoDB.DarkMatter) %>%
  setView(lng = -102.5528, lat = 23.6345, zoom = 5) %>%
  addHeatmap(lng = ~lng, lat = ~lat, intensity = ~temperatura,
             blur = 20, max = 0.05, radius = 15) %>%
  addLegend("bottomright", 
            colors = c("#313695", "#4575b4", "#abd9e9", "#fee090", "#f46d43", "#a50026"),
            labels = c("< 10°C", "10-15°C", "15-20°C", "20-25°C", "25-30°C", "> 30°C"),
            title = "Temperatura")

mapa_calor

Consideraciones para Mapas Móviles

Optimización para dispositivos móviles:

  1. Tamaño responsivo: Los mapas se ajustan automáticamente al ancho de pantalla
  2. Controles táctiles: Leaflet está optimizado para gestos touch (zoom, pan)
  3. Popups adaptables: Los popups se redimensionan según el tamaño de pantalla
  4. Carga eficiente: Solo se cargan las tiles visibles en el viewport

Mejores prácticas: - Usar marcadores no muy pequeños para facilitar el toque - Simplificar la información en popups para pantallas pequeñas - Evitar sobrecarga de datos en mapas móviles - Usar controles de capas colapsables

Conclusiones del Análisis Geográfico

Hallazgos Principales

  1. Distribución Urbana: Las principales ciudades se concentran en el centro y norte de México
  2. Accesibilidad: Los mapas interactivos permiten exploración detallada de los datos
  3. Responsividad: El diseño se adapta perfectamente a diferentes dispositivos

Próximos Pasos

Para expandir este análisis se puede:

  • Agregar datos de censo más detallados
  • Incluir análisis de densidad poblacional
  • Incorporar datos económicos por región
  • Añadir capas de información adicionales (clima, economía, etc.)

Recursos Útiles

Para aprender más sobre mapas en R:


Reporte generado el 2025-06-27 usando R Markdown y Leaflet