En este ejercicio se realizará un proceso de unión de datos espaciales. Primero se cargan las librerías necesarias

library(sf)
## Warning: package 'sf' was built under R version 4.0.5
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(ggmap)
## Warning: package 'ggmap' was built under R version 4.0.5
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.0.5
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.5
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v tibble  3.1.0     v dplyr   1.0.5
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.1
## v purrr   0.3.4
## Warning: package 'tidyr' was built under R version 4.0.5
## Warning: package 'dplyr' was built under R version 4.0.5
## Warning: package 'stringr' was built under R version 4.0.5
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Después se cargan los datasets, primero los datos espaciales de las 16 alcaldías de la Ciudad de México

alcaldias <- st_read("alcaldias_cdmx.geojson", stringsAsFactors = TRUE)
## Reading layer `alcaldias' from data source `D:\Roberto\CursoCiudades\Clase2\Clase2\alcaldias_cdmx.geojson' using driver `GeoJSON'
## Simple feature collection with 16 features and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -99.36492 ymin: 19.04824 xmax: -98.9403 ymax: 19.59276
## Geodetic CRS:  WGS 84

Se puede ver el resumen del archivo

summary(alcaldias)
##      CVEGEO   CVE_ENT    CVE_MUN                     NOMGEO  
##  09002  : 1   09:16   002    : 1   Álvaro Obregón       : 1  
##  09003  : 1           003    : 1   Azcapotzalco         : 1  
##  09004  : 1           004    : 1   Benito Juárez        : 1  
##  09005  : 1           005    : 1   Coyoacán             : 1  
##  09006  : 1           006    : 1   Cuajimalpa de Morelos: 1  
##  09007  : 1           007    : 1   Cuauhtémoc           : 1  
##  (Other):10           (Other):10   (Other)              :10  
##           geometry 
##  MULTIPOLYGON :16  
##  epsg:4326    : 0  
##  +proj=long...: 0  
##                    
##                    
##                    
## 

Y se puede apreciar el primer mapa

ggplot(alcaldias)+
  geom_sf()+
  labs(title = "Ciudad de México: Alcaldías",
       subtitle = "Fuente: INEGI",
       caption = "@geogracelis") +
  labs(x = "Longitud", y = "Latitud") +
  theme_bw() +
  theme (plot.title = element_text(family = "sans",
                                   size = rel(1), 
                                   vjust = 2, 
                                   face = "bold.italic", 
                                   color = "black", 
                                   lineheight = 1.5)) +
  theme (plot.subtitle = element_text(family = "sans",
                                   size = rel(0.8),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray40", 
                                   lineheight = 1.5)) +
  theme (plot.caption = element_text(family = "sans",
                                   size = rel(0.7),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray30", 
                                   lineheight = 1.5)) +
  theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.text.x = element_text(face="italic", colour="gray", size=rel(0.65)),
         axis.text.y = element_text(face="italic", colour="gray", size=rel(0.65), angle=90, hjust=0.5))

  theme(legend.title = element_text(face = "bold", colour="darkgray", size=rel(0.75))) +
  theme(legend.text = element_text(face="italic", colour="gray", size=rel(0.6)))
## List of 2
##  $ legend.title:List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "bold"
##   ..$ colour       : chr "darkgray"
##   ..$ size         : 'rel' num 0.75
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.text :List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "italic"
##   ..$ colour       : chr "gray"
##   ..$ size         : 'rel' num 0.6
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

Ahora se importan las tablas en formato csv que contiene la información de las llamadas al 911 (teléfono de emergencias) en la Ciudad de México durante el año 2020. Son dos tablas, de cada uno de los semestres del año.

semestre1 <- read.csv("911_semestre1.csv", stringsAsFactors = TRUE, encoding = "UTF-8")

semestre2 <- read.csv("911_semestre2.csv", stringsAsFactors = TRUE, encoding = "UTF-8")

Se puede hacer uso de la función names() de cada tabla para verificar que tienen el mismo número de columnas y el mismo orden de las mismas

names(semestre1)
##  [1] "folio"              "incidente_c4"       "fecha_creacion"    
##  [4] "hora_creacion"      "mes_creacion"       "año_creacion"      
##  [7] "fecha_cierre"       "mes_cierre"         "año_cierre"        
## [10] "hora_cierre"        "colonia"            "codigo_cierre"     
## [13] "clas_con_f_alarma"  "delegacion_cierre"  "manzana"           
## [16] "longitud_centroide" "latitud_centroide"  "geometry"
names(semestre2)
##  [1] "folio"              "incidente_c4"       "fecha_creacion"    
##  [4] "hora_creacion"      "mes_creacion"       "año_creacion"      
##  [7] "fecha_cierre"       "mes_cierre"         "año_cierre"        
## [10] "hora_cierre"        "colonia"            "codigo_cierre"     
## [13] "clas_con_f_alarma"  "delegacion_cierre"  "manzana"           
## [16] "longitud_centroide" "latitud_centroide"  "geometry"

Se puede apreciar que ambas tablas tienen el mismo número de columnas y se encuentran en el mismo orden por lo que es posible hacer una unión de las filas con la función rbin()

llamadas911 = rbind(semestre1, semestre2)
View (llamadas911)
# summary(llamadas911)

Debido a que en la base de datos, las llamadas al 911 tienen coordenadas geográficas se puede realizar un mapa

ggplot(llamadas911) +
  geom_point(aes(x = longitud_centroide, y = latitud_centroide), color = "#2C9FB8", alpha=0.5, size= 0.2)+
  labs(title = "Ciudad de México: Llamadas 911",
       subtitle = "Fuente: C5 Ciudad de México",
       caption = "@geogracelis") +
  labs(x = "Longitud", y = "Latitud") +
  theme_bw() +
  theme (plot.title = element_text(family = "sans",
                                   size = rel(1), 
                                   vjust = 2, 
                                   face = "bold.italic", 
                                   color = "black", 
                                   lineheight = 1.5)) +
  theme (plot.subtitle = element_text(family = "sans",
                                   size = rel(0.8),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray40", 
                                   lineheight = 1.5)) +
  theme (plot.caption = element_text(family = "sans",
                                   size = rel(0.7),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray30", 
                                   lineheight = 1.5)) +
  theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.text.x = element_text(face="italic", colour="gray", size=rel(0.65)),
         axis.text.y = element_text(face="italic", colour="gray", size=rel(0.65), angle=90, hjust=0.5))

  theme(legend.title = element_text(face = "bold", colour="darkgray", size=rel(0.75))) +
  theme(legend.text = element_text(face="italic", colour="gray", size=rel(0.6)))
## List of 2
##  $ legend.title:List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "bold"
##   ..$ colour       : chr "darkgray"
##   ..$ size         : 'rel' num 0.75
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.text :List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "italic"
##   ..$ colour       : chr "gray"
##   ..$ size         : 'rel' num 0.6
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

También se pueden visualizar ambos datasets en un mismo mapa

ggplot()+
  geom_sf(data = alcaldias, aes(fill= NOMGEO), show.legend = FALSE) +
  geom_point(data = llamadas911, aes(x = longitud_centroide, y = latitud_centroide), color = "gray30", alpha=0.5, size= 0.1) +
  labs(title = "Ciudad de México: Llamadas al 911 en 2020",
       subtitle = "Fuente: C5 Ciudad de México",
       caption = "@geogracelis") +
  labs(x = "Longitud", y = "Latitud")+
  theme_bw() +
  theme (plot.title = element_text(family = "sans",
                                   size = rel(1), 
                                   vjust = 2, 
                                   face = "bold.italic", 
                                   color = "black", 
                                   lineheight = 1.5)) +
  theme (plot.subtitle = element_text(family = "sans",
                                   size = rel(0.8),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray40", 
                                   lineheight = 1.5)) +
  theme (plot.caption = element_text(family = "sans",
                                   size = rel(0.7),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray30", 
                                   lineheight = 1.5)) +
  theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.text.x = element_text(face="italic", colour="gray", size=rel(0.65)),
         axis.text.y = element_text(face="italic", colour="gray", size=rel(0.65), angle=90, hjust=0.5))

  theme(legend.title = element_text(face = "bold", colour="darkgray", size=rel(0.75))) +
  theme(legend.text = element_text(face="italic", colour="gray", size=rel(0.6)))
## List of 2
##  $ legend.title:List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "bold"
##   ..$ colour       : chr "darkgray"
##   ..$ size         : 'rel' num 0.75
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.text :List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "italic"
##   ..$ colour       : chr "gray"
##   ..$ size         : 'rel' num 0.6
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

Ahora se transforma el dataset csv en uno espacial

llamadas_geo <- st_as_sf(llamadas911, coords = c("longitud_centroide", "latitud_centroide"), crs = 4326)
head(llamadas_geo)
## Simple feature collection with 6 features and 15 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -99.18454 ymin: 19.31599 xmax: -99.05113 ymax: 19.4599
## Geodetic CRS:  WGS 84
##             folio                   incidente_c4 fecha_creacion hora_creacion
## 1 C5/200103/07617            Disturbio-Escándalo     2020-01-03      23:01:50
## 2 C5/200103/07629            Disturbio-Escándalo     2020-01-03      23:05:16
## 3 C5/200103/07633            Disturbio-Escándalo     2020-01-03      23:06:31
## 4 C5/200103/07639 Servicios-Entrevista Ciudadana     2020-01-03      23:06:44
## 5 C5/200103/07640 Servicios-Entrevista Ciudadana     2020-01-03      23:07:16
## 6 C5/200103/07648           Médicos-Inconsciente     2020-01-03      23:08:05
##   mes_creacion año_creacion fecha_cierre mes_cierre año_cierre hora_cierre
## 1        Enero         2020   2020-01-03      Enero       2020    23:18:08
## 2        Enero         2020   2020-01-03      Enero       2020    23:13:17
## 3        Enero         2020   2020-01-03      Enero       2020    23:15:23
## 4        Enero         2020   2020-01-03      Enero       2020    23:10:24
## 5        Enero         2020   2020-01-03      Enero       2020    23:15:10
## 6        Enero         2020   2020-01-03      Enero       2020    23:32:40
##                                    colonia codigo_cierre clas_con_f_alarma
## 1                               PERALVILLO      Negativo      FALTA CÍVICA
## 2                                 NONOALCO      Negativo      FALTA CÍVICA
## 3 CONJ HAB ALIANZA POP REVOLUCIONARIA04800         Falso      FALSA ALARMA
## 4                                   CENTRO     Duplicado          SERVICIO
## 5                           CUATRO ARBOLES      Negativo          SERVICIO
## 6                                LAS PEÑAS      Negativo URGENCIAS MEDICAS
##     delegacion_cierre          manzana                   geometry
## 1          CUAUHTEMOC 0901500010038010  POINT (-99.12885 19.4599)
## 2       BENITO JUAREZ 0901400010558002  POINT (-99.18454 19.3824)
## 3            COYOACAN 090030001136A027 POINT (-99.11875 19.31599)
## 4          CUAUHTEMOC             <NA> POINT (-99.14406 19.43574)
## 5 VENUSTIANO CARRANZA 0901700011238025  POINT (-99.0838 19.42136)
## 6          IZTAPALAPA 0900700014043024 POINT (-99.05113 19.33792)
class(llamadas_geo)
## [1] "sf"         "data.frame"

Se puede guardar el nuevo archivo en formato geojson mediante la función write_csv(datos, “nombre”)

st_write(llamadas_geo, "llamadas_911.geojson")
## Writing layer `llamadas_911' to data source `llamadas_911.geojson' using driver `GeoJSON'
## Writing 1180692 features with 15 fields and geometry type Point.

Ahora se unen ambos datasets en uno solo

llamadas_geo <- st_join(llamadas_geo, alcaldias)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
head(llamadas_geo)
## Simple feature collection with 6 features and 19 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -99.18454 ymin: 19.31599 xmax: -99.05113 ymax: 19.4599
## Geodetic CRS:  WGS 84
##             folio                   incidente_c4 fecha_creacion hora_creacion
## 1 C5/200103/07617            Disturbio-Escándalo     2020-01-03      23:01:50
## 2 C5/200103/07629            Disturbio-Escándalo     2020-01-03      23:05:16
## 3 C5/200103/07633            Disturbio-Escándalo     2020-01-03      23:06:31
## 4 C5/200103/07639 Servicios-Entrevista Ciudadana     2020-01-03      23:06:44
## 5 C5/200103/07640 Servicios-Entrevista Ciudadana     2020-01-03      23:07:16
## 6 C5/200103/07648           Médicos-Inconsciente     2020-01-03      23:08:05
##   mes_creacion año_creacion fecha_cierre mes_cierre año_cierre hora_cierre
## 1        Enero         2020   2020-01-03      Enero       2020    23:18:08
## 2        Enero         2020   2020-01-03      Enero       2020    23:13:17
## 3        Enero         2020   2020-01-03      Enero       2020    23:15:23
## 4        Enero         2020   2020-01-03      Enero       2020    23:10:24
## 5        Enero         2020   2020-01-03      Enero       2020    23:15:10
## 6        Enero         2020   2020-01-03      Enero       2020    23:32:40
##                                    colonia codigo_cierre clas_con_f_alarma
## 1                               PERALVILLO      Negativo      FALTA CÍVICA
## 2                                 NONOALCO      Negativo      FALTA CÍVICA
## 3 CONJ HAB ALIANZA POP REVOLUCIONARIA04800         Falso      FALSA ALARMA
## 4                                   CENTRO     Duplicado          SERVICIO
## 5                           CUATRO ARBOLES      Negativo          SERVICIO
## 6                                LAS PEÑAS      Negativo URGENCIAS MEDICAS
##     delegacion_cierre          manzana CVEGEO CVE_ENT CVE_MUN
## 1          CUAUHTEMOC 0901500010038010  09015      09     015
## 2       BENITO JUAREZ 0901400010558002  09014      09     014
## 3            COYOACAN 090030001136A027  09003      09     003
## 4          CUAUHTEMOC             <NA>  09015      09     015
## 5 VENUSTIANO CARRANZA 0901700011238025  09017      09     017
## 6          IZTAPALAPA 0900700014043024  09007      09     007
##                NOMGEO                   geometry
## 1          Cuauhtémoc  POINT (-99.12885 19.4599)
## 2       Benito Juárez  POINT (-99.18454 19.3824)
## 3            Coyoacán POINT (-99.11875 19.31599)
## 4          Cuauhtémoc POINT (-99.14406 19.43574)
## 5 Venustiano Carranza  POINT (-99.0838 19.42136)
## 6          Iztapalapa POINT (-99.05113 19.33792)

Se puede hacer un filtro para ver sólo un tipo de disturbio específico. Pero primero se muestran los tipos de disturbio existentes con la función unique()

unique(llamadas_geo$incidente_c4)
##   [1] Disturbio-Escándalo                                                      
##   [2] Servicios-Entrevista Ciudadana                                           
##   [3] Médicos-Inconsciente                                                     
##   [4] Denuncia-Persona Sospechosa                                              
##   [5] Servicios-Corto Cables - Transformador                                   
##   [6] Denuncia-Servidor Público                                                
##   [7] Derrame o Fuga-Olor a Gas - Combustible Quimicos                         
##   [8] Lesionado-Caída                                                          
##   [9] Derrame o Fuga-Cilindro de Gas                                           
##  [10] Denuncia-Hechos                                                          
##  [11] Agresión-Persona                                                         
##  [12] Cadáver-Muerte Causa Ignorada                                            
##  [13] Abandono-Vehículo                                                        
##  [14] Médicos-Evento Vascular Cerebral                                         
##  [15] Incendio-Instalaciones de Gobierno                                       
##  [16] Médicos-Hipoglucemia                                                     
##  [17] Daños-Otros                                                              
##  [18] Administrativas-Ebrios                                                   
##  [19] Servicios-Vehículo Obstruyendo                                           
##  [20] Médicos-Infarto                                                          
##  [21] Lesionado-Otros                                                          
##  [22] Administrativas-Drogados                                                 
##  [23] Administrativas-Franeleros                                               
##  [24] Agresión-Negocio                                                         
##  [25] Servicios-Apoyo Vial Embotellamiento                                     
##  [26] Servicios-Persona Extraviada                                             
##  [27] Privación de la Libertad-Retención de Menores                            
##  [28] Administrativas-Faltas a la Moral                                        
##  [29] Denuncia-Invasion de Predio                                              
##  [30] Lesionado-Picadura o Mordedura                                           
##  [31] Médicos-Crisis Nerviosa                                                  
##  [32] Servicios-Reporte de Vehículo Vía Radio                                  
##  [33] Incendio-Casa Habitación                                                 
##  [34] Incendio-Lote baldio                                                     
##  [35] Detención Ciudadana-Robo                                                 
##  [36] Explosión-Casa Habitación                                                
##  [37] Robo-Otros                                                               
##  [38] Incendio-Otros                                                           
##  [39] Médicos-Convulsiones                                                     
##  [40] Robo-Automovilista                                                       
##  [41] Servicios-Solicitud de Escolta                                           
##  [42] Agresión-A Policía                                                       
##  [43] Privación de la Libertad-Secuestro                                       
##  [44] Amenaza-A Persona                                                        
##  [45] Daños-Propiedad Ajena                                                    
##  [46] Denuncia-Menor en riesgo                                                 
##  [47] Lesionado-Prácticas Deportivas                                           
##  [48] Servicios-Apoyo Vial Semáforos Descompuestos                             
##  [49] Administrativas-Tirar Basura en Vía Pública                              
##  [50] Incendio-Negocio  Plaza Comercial   Mercado                              
##  [51] Médicos-Intoxicado                                                       
##  [52] Daños por Fenómeno Natural o Tercero-Caída de Cables                     
##  [53] Agresión-Casa Habitación                                                 
##  [54] Médicos-Enfermo                                                          
##  [55] Disturbio-Disparos                                                       
##  [56] Incendio-Quema de Pastizal                                               
##  [57] Incendio-Vehículo                                                        
##  [58] Servicios-Vehículo Descompuesto                                          
##  [59] Derrame o Fuga-Tanque Estacionario                                       
##  [60] Derrame o Fuga-Aguas Negras                                              
##  [61] Daños-A la Nación - Vías de Comunicación                                 
##  [62] Derrame o Fuga-Agua Potable                                              
##  [63] Daños por Fenómeno Natural o Tercero-PosteLadeado                        
##  [64] Médicos-Trabajo de Parto - Alumbramiento                                 
##  [65] Disturbio-Arrancones                                                     
##  [66] Médicos-Asfixia-Atragantamiento                                          
##  [67] Cadáver-Suspendido                                                       
##  [68] Derrame o Fuga-Material o Sustancia en pavimento                         
##  [69] Médicos-Amenaza de Aborto                                                
##  [70] Incendio-Transformador                                                   
##  [71] Amenaza-Bomba                                                            
##  [72] Incendio-Ductos                                                          
##  [73] Lesionado-Quemadura                                                      
##  [74] Disturbio-Bloqueos                                                       
##  [75] Daños por Fenómeno Natural o Tercero-Caída Rama                          
##  [76] Disturbio-Jugadores                                                      
##  [77] Robo-Escuela                                                             
##  [78] Servicios-Menor extraviado                                               
##  [79] Lesionado-Por Objeto Contuso                                             
##  [80] Servicios-Falta de Agua                                                  
##  [81] Médicos-Hemorragia                                                       
##  [82] Derrame o Fuga-Gas Natural                                               
##  [83] Médicos-Dolor                                                            
##  [84] Incendio-Quema de Basura                                                 
##  [85] Disturbio-Riña                                                           
##  [86] Cadáver-Muerte por enfermedad previamente diagnosticada                  
##  [87] Administrativas-Fisiológica                                              
##  [88] Contra la Salud-Consumo de Droga o Estupefacientes                       
##  [89] Disturbio-Desperdicio de Agua                                            
##  [90] Servicios-Animales Peligrosos                                            
##  [91] Administrativas-Comercio Informal                                        
##  [92] Servicios-Reporte de Vehículo Vía GPS                                    
##  [93] Intento de suicidio-Se cortó-autolesionó                                 
##  [94] Lesionado-Por Golpes-Agresión                                            
##  [95] Servicios-Alarma Activada                                                
##  [96] Denuncia-Persona en Riesgo                                               
##  [97] Lesionado-Por Arma Blanca                                                
##  [98] Servicios-Otros                                                          
##  [99] Servicios-Baches                                                         
## [100] Daños por Fenómeno Natural o Tercero-Caída de Árbol                      
## [101] Amenaza-De Suicidio                                                      
## [102] Incendio-Edificio                                                        
## [103] Denuncia-Persona Desaparecida                                            
## [104] Abandono-De Objeto                                                       
## [105] Disturbio-Concentración de Personas                                      
## [106] Daños por Fenómeno Natural o Tercero-Árbol Ladeado                       
## [107] Daños-Casa Habitación                                                    
## [108] Lesionado-Cayó de estructura o inmueble                                  
## [109] Abandono-Animal                                                          
## [110] Disturbio-Fiestas                                                        
## [111] Incendio-Arbol                                                           
## [112] Explosión-Negocio  Plaza Comercial   Mercado                             
## [113] Servicios-Vehículo Recuperado-Localizado                                 
## [114] Daños por Fenómeno Natural o Tercero-Afectación Inmueble                 
## [115] Denuncia-Maltrato Animal                                                 
## [116] Denuncia-Allanamiento                                                    
## [117] Explosión-Otros                                                          
## [118] Explosión-Transformador                                                  
## [119] Administrativas-Otros                                                    
## [120] Cadáver-Otros                                                            
## [121] Robo-Bienes Gubernamentales (Coladeras Cable)                            
## [122] Robo-Animales                                                            
## [123] Daños-Sistema Tecnológico de Videovigilancia                             
## [124] Daños por Fenómeno Natural o Tercero-Socavón                             
## [125] Servicios-Apoyo para Desalojo                                            
## [126] Servicios-Enjambre                                                       
## [127] Denuncia-Maltrato - Discriminación                                       
## [128] Incendio-Forestal                                                        
## [129] Daños-Negocio                                                            
## [130] Incendio-Mufa                                                            
## [131] Daños por Fenómeno Natural o Tercero-Zona sin Energia Electrica          
## [132] Daños por Fenómeno Natural o Tercero-Caída de Poste                      
## [133] Incendio-Industria                                                       
## [134] Disturbio-Quema de Pirotecnia                                            
## [135] Daños por Fenómeno Natural o Tercero-Afectación Vehículo                 
## [136] Administrativas-Grafitis                                                 
## [137] Daños por fenómeno natural o tercero-Caída de Anuncio Espectacular       
## [138] Incendio-Comercio ambulante                                              
## [139] Cadáver-Caída                                                            
## [140] Cadáver-Atragantamiento-Asfixia                                          
## [141] Agresión-Servidor Público                                                
## [142] Servicios-Coladera o Resgistro sin Tapa                                  
## [143] Lesionado-Policía                                                        
## [144] Intento de suicidio-Tomó pastillas o estupefacientes                     
## [145] Denuncia-Olor Fétido - Manchas Hematicas en Inmueble                     
## [146] Agresión-Otros                                                           
## [147] Servicios-Simulacro                                                      
## [148] Lesionado-Por Herramienta o Maquinaria                                   
## [149] Detención Ciudadana-Delitos Sexuales                                     
## [150] Lesionado-Suspendido                                                     
## [151] Servicios-Abastecimiento de Agua                                         
## [152] Servicios-Transporte de Carga Fuera de Horario                           
## [153] Denuncia-Ruptura de Sellos                                               
## [154] Denuncia-Vehiculo con Manchas Hemáticas - Olor fétido                    
## [155] Derrame o Fuga-Pipa de Gas                                               
## [156] Daños-Instalaciones Gubernamentales                                      
## [157] Abandono-Persona                                                         
## [158] Administrativas-Prostitución                                             
## [159] Médicos-Otros                                                            
## [160] Denuncia-Otros                                                           
## [161] Incendio-Escuela                                                         
## [162] Derrame o Fuga-Productos Químicos                                        
## [163] Daños por Fenómeno Natural o Tercero-Caída de Barda                      
## [164] Detención Ciudadana-Daños                                                
## [165] Daños por Fenómeno Natural o Tercero-Derrumbe                            
## [166] Sismo-Persona en crisis nerviosa                                         
## [167] Intento de suicidio-Se suspendió                                         
## [168] Accidente-Sumersion                                                      
## [169] Servicios-Vehículo Chatarra                                              
## [170] Intento de suicidio-Se arrojó  al vacío                                  
## [171] Robo-Cable                                                               
## [172] Detención Ciudadana-Agresión                                             
## [173] Cadáver-Suicidio                                                         
## [174] Disturbio-Linchamiento                                                   
## [175] Robo-Institución Pública                                                 
## [176] Intento de suicidio-Otros                                                
## [177] Abandono-Órganos-Tejido-Extremidades                                     
## [178] Detención Ciudadana-Fraude                                               
## [179] Explosión-Escuela                                                        
## [180] Disturbio-Casa Habitación                                                
## [181] Amenaza-A Inmueble                                                       
## [182] Explosión-Comercio ambulante                                             
## [183] Cadáver-Intoxicación                                                     
## [184] Daños por Fenómeno Natural o Tercero-Agrietamiento                       
## [185] Explosión-Vehículo                                                       
## [186] Detención ciudadana-Secuestro                                            
## [187] Intento de suicidio-Se disparó                                           
## [188] Daños por Fenómeno Natural o Tercero-Desprendimiento Lona de Espectacular
## [189] Daños por Fenómeno Natural o Tercero-Deslave                             
## [190] Robo-Cajero Automático                                                   
## [191] Disturbio-Otros                                                          
## [192] Incendio-Pipa                                                            
## [193] Explosión-Edificio                                                       
## [194] Daños por Fenómeno Natural o Tercero-Inundación                          
## [195] Explosión-Mufas                                                          
## [196] Lesionado-Prensado                                                       
## [197] Daños por Fenómeno Natural o Tercero-Otros                               
## [198] Servicios-Peregrinación                                                  
## [199] Cadáver-Sumersión-Ahogamiento                                            
## [200] Privación de la Libertad-Otros                                           
## [201] Daños por Fenómeno Natural o Tercero-Hundimiento                         
## [202] Detención Ciudadana-Otros                                                
## [203] Explosión-Industria                                                      
## [204] Robo-Transporte de pasajeros-Foráneo                                     
## [205] Robo-Camioneta de Valores                                                
## [206] Denuncia de Hechos-Portación de Arma                                     
## [207] Cadáver-Feto                                                             
## [208] Sismo-Percepción de sismo (baja intensidad)                              
## [209] Sismo-Fuga de Gas Natural                                                
## [210] Sismo-Socavón                                                            
## [211] Abandono-Arma - Cartucho                                                 
## [212] Servicios-Corto Circuito instalación o subestación eléctrica             
## [213] Detención Ciudadana-Allanamiento                                         
## [214] Sismo-Evacuación                                                         
## [215] Lesionado-Electrocutado                                                  
## [216] Sismo-Evaluación-Edificio                                                
## [217] Robo-Bancos                                                              
## [218] Servicios-9-1-1 CDMX - Llamada Silenciosa                                
## [219] Daños por Fenómeno Natural o Tercero-Encharcamiento                      
## [220] Privación de la Libertad-Secuestro Express                               
## [221] Sismo-Poste o Árbol Ladeado                                              
## [222] Intento de suicidio-Inhalación de gas-químicos                           
## [223] Cadáver-Quemado o Electrocutado                                          
## [224] Médicos-Sumersión-Ahogamiento                                            
## [225] Abandono-Artefacto Explosivo                                             
## [226] Derrame o Fuga-Petróleo y Derivados o Ductos                             
## [227] Denuncia-Venta de Pirotecnia                                             
## [228] Sismo-Caída de Cables                                                    
## [229] Denuncia-Uso o presentación de documento falso                           
## [230] Denuncia-Reventa                                                         
## [231] Disturbio-Marcha de Personas                                             
## [232] Electorales-Agresión a Inmueble                                          
## [233] Sismo-Falta energía Eléctrica                                            
## [234] Electorales-Robo de Urnas o Boletas                                      
## [235] Electorales-Retiro de Propaganda                                         
## [236] Daños por Fenómeno Natural o Tercero-Desborde - Canal - Rio - Presa      
## [237] Incendio-Instalación o Subestación eléctrica                             
## [238] Servicios-Denuncia Profeco                                               
## [239] Derrame o Fuga-Otros                                                     
## [240] Sismo-Persona atrapada-Elevador                                          
## [241] Sismo-Fuga de Agua                                                       
## [242] Electorales-Otros                                                        
## [243] Electorales-Agresión a Funcionarios                                      
## [244] Electorales-Proselitismo                                                 
## [245] Electorales-Compra de Votos                                              
## [246] Explosión-Instalación o Subestación eléctrica                            
## [247] Daños por Fenómeno Natural o Tercero-Caída de Ceniza                     
## [248] Sismo-Caída de Árbol                                                     
## [249] Robo-Intento de saqueo                                                   
## [250] Robo-Saqueo de establecimiento                                           
## [251] Incendio-Instalaciones PEMEX                                             
## [252] Incendio-Gasolinera                                                      
## [253] Daños por Fenómeno Natural o Tercero-Caida de Rayo                       
## [254] Sismo-Fuga de Gas                                                        
## [255] Explosión-Artefacto Explosivo                                            
## [256] Accidente-Aéreo                                                          
## [257] Explosión-Pipa                                                           
## [258] Servicios-Desalojo Simulacro                                             
## [259] Amenaza-Otros                                                            
## [260] Sismo-Agrietamiento                                                      
## [261] Sismo-Estructura en Riesgo de Colapso                                    
## [262] Intento de suicidio-Se arrojó  a las vías del metro                      
## [263] Sismo-Evaluación-Escuela                                                 
## [264] Sismo-Evaluación-Casa Habitación                                         
## [265] Sismo-Derrumbe                                                           
## [266] Sismo-Persona Lesionada                                                  
## [267] Sismo-Explosión Transformador                                            
## [268] Sismo-Caída de Poste                                                     
## [269] Sismo-Evaluación-Unidad Habitacional                                     
## [270] Sismo-Persona Atrapada                                                   
## [271] Sismo-Caída de Barda                                                     
## [272] Sismo-Incendio                                                           
## [273] Sismo-Otros                                                              
## [274] Sismo-Evaluación-Edificio de Gobierno                                    
## [275] Explosión-Gasolinera                                                     
## [276] Explosión-Instalaciones de Gobierno                                      
## 276 Levels: Abandono-Animal ... Explosión-Instalaciones de Gobierno

Ahpra se hará el filtro para obtener sólo el disturbio identificado como disparos

disturbio <- filter(llamadas_geo, incidente_c4 == "Disturbio-Disparos")

Se realiza un mapa de este tipo de disturbios considerando la alcaldía donde se reportó

ggplot()+
  geom_sf(data = alcaldias, fill="gray75", color="white") +
  geom_sf(data = disturbio, aes(color= NOMGEO), alpha=0.5, size= 0.3, show.legend = FALSE) +
  scale_color_viridis_d(option = "C") +
  labs(title = "Ciudad de México: Llamadas al 911 por disparos",
       subtitle = "Fuente: C5 Ciudad de México",
       caption = "@geogracelis") +
  labs(x = "Longitud", y = "Latitud")+
  theme_bw() +
  theme (plot.title = element_text(family = "sans",
                                   size = rel(1), 
                                   vjust = 2, 
                                   face = "bold.italic", 
                                   color = "black", 
                                   lineheight = 1.5)) +
  theme (plot.subtitle = element_text(family = "sans",
                                   size = rel(0.8),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray40", 
                                   lineheight = 1.5)) +
  theme (plot.caption = element_text(family = "sans",
                                   size = rel(0.7),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray30", 
                                   lineheight = 1.5)) +
  theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.text.x = element_text(face="italic", colour="gray", size=rel(0.65)),
         axis.text.y = element_text(face="italic", colour="gray", size=rel(0.65), angle=90, hjust=0.5))

  theme(legend.title = element_text(face = "bold", colour="darkgray", size=rel(0.75))) +
  theme(legend.text = element_text(face="italic", colour="gray", size=rel(0.6)))
## List of 2
##  $ legend.title:List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "bold"
##   ..$ colour       : chr "darkgray"
##   ..$ size         : 'rel' num 0.75
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.text :List of 11
##   ..$ family       : NULL
##   ..$ face         : chr "italic"
##   ..$ colour       : chr "gray"
##   ..$ size         : 'rel' num 0.6
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

¿Qué cantidad de llamadas al 911 por disparos tuvo cada una de las alcaldías?

llamadas_alcaldia <- disturbio %>%
  group_by(NOMGEO) %>%
  summarise(cantidad=n())
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
## although coordinates are longitude/latitude, st_union assumes that they are planar
summary(llamadas_alcaldia)
##                    NOMGEO      cantidad              geometry 
##  Álvaro Obregón       : 1   Min.   :  180   MULTIPOINT   :16  
##  Azcapotzalco         : 1   1st Qu.: 1059   epsg:4326    : 0  
##  Benito Juárez        : 1   Median : 1506   +proj=long...: 0  
##  Coyoacán             : 1   Mean   : 2098                     
##  Cuajimalpa de Morelos: 1   3rd Qu.: 1838                     
##  Cuauhtémoc           : 1   Max.   :10166                     
##  (Other)              :10

Se elimina “lo geográfico” porque puede ser muy pesado para realizar operaciones

llamadas_alcaldia <- llamadas_alcaldia %>%
  st_set_geometry(NULL)
summary(llamadas_alcaldia)
##                    NOMGEO      cantidad    
##  Álvaro Obregón       : 1   Min.   :  180  
##  Azcapotzalco         : 1   1st Qu.: 1059  
##  Benito Juárez        : 1   Median : 1506  
##  Coyoacán             : 1   Mean   : 2098  
##  Cuajimalpa de Morelos: 1   3rd Qu.: 1838  
##  Cuauhtémoc           : 1   Max.   :10166  
##  (Other)              :10
alcaldias <- left_join(alcaldias, llamadas_alcaldia, by = "NOMGEO")

Y se realiza un mapa coroplético que indica el número de llamadas por disparos según alcaldía de la ciudad de México en 2020

ggplot(alcaldias)+
  geom_sf(aes(fill = cantidad), color="white") +
  labs(title = "Ciudad de México: Llamadas al 911 por disparos",
       subtitle = "Fuente: C5 Ciudad de México",
       caption = "@geogracelis") +
  scale_fill_viridis_c("# de llamadas", option = "rocket", direction=-1) +
  labs(x = "Longitud", y = "Latitud")+
  theme_bw() +
  theme (plot.title = element_text(family = "sans",
                                   size = rel(1), 
                                   vjust = 2, 
                                   face = "bold.italic", 
                                   color = "black", 
                                   lineheight = 1.5)) +
  theme (plot.subtitle = element_text(family = "sans",
                                   size = rel(0.8),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray40", 
                                   lineheight = 1.5)) +
  theme (plot.caption = element_text(family = "sans",
                                   size = rel(0.7),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray30", 
                                   lineheight = 1.5)) +
  theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.text.x = element_text(face="italic", colour="gray", size=rel(0.65)),
         axis.text.y = element_text(face="italic", colour="gray", size=rel(0.65), angle=90, hjust=0.5)) +
  theme(legend.title = element_text(face = "bold", colour="darkgray", size=rel(0.75))) +
  theme(legend.text = element_text(face="italic", colour="gray", size=rel(0.6)))

Se observa que la alcaldía Iztapalapa es la que presentó el mayor número de llamadas por disparon al 911 en el año 2020.

Ahora se hará un filtro para una alcaldía: Iztacalco

iztacalco <- filter(llamadas_geo, NOMGEO == "Iztacalco")

Se realiza un mapa de los disturbios de la alcaldía Iztacalco considerando la colonia (barrio) en que se reportó

ggplot()+
  geom_sf(data = iztacalco, aes(color= colonia), alpha=0.5, size= 0.5, show.legend = FALSE) +
  scale_color_viridis_d(option = "C") +
  labs(title = "Iztacalco: Llamadas al 911 según colonia",
       subtitle = "Fuente: C5 Ciudad de México",
       caption = "@geogracelis") +
  labs(x = "Longitud", y = "Latitud")+
  theme_bw() +
  theme (plot.title = element_text(family = "sans",
                                   size = rel(1), 
                                   vjust = 2, 
                                   face = "bold.italic", 
                                   color = "black", 
                                   lineheight = 1.5)) +
  theme (plot.subtitle = element_text(family = "sans",
                                   size = rel(0.8),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray40", 
                                   lineheight = 1.5)) +
  theme (plot.caption = element_text(family = "sans",
                                   size = rel(0.7),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray30", 
                                   lineheight = 1.5)) +
  theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.text.x = element_text(face="italic", colour="gray", size=rel(0.65)),
         axis.text.y = element_text(face="italic", colour="gray", size=rel(0.65), angle=90, hjust=0.5)) +
  theme(legend.title = element_text(face = "bold", colour="darkgray", size=rel(0.75))) +
  theme(legend.text = element_text(face="italic", colour="gray", size=rel(0.6)))

Para finalizar, se agregará un mapa base de contexto gracias a la librería ggmap()

Primero, se crea una caja con las coordenadas extremas

bbox_iztacalco <- as.numeric(st_bbox(iztacalco))

Después “se llama” a una capa base de la página http://maps.stamen.com/

mapa_iztacalco <- get_stamenmap(bbox = bbox_iztacalco,
                           maptype = "terrain-lines",
                           zoom = 15)
## Source : http://tile.stamen.com/terrain-lines/15/7360/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7361/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7362/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7363/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7364/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7365/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7366/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7367/14581.png
## Source : http://tile.stamen.com/terrain-lines/15/7360/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7361/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7362/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7363/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7364/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7365/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7366/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7367/14582.png
## Source : http://tile.stamen.com/terrain-lines/15/7360/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7361/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7362/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7363/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7364/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7365/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7366/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7367/14583.png
## Source : http://tile.stamen.com/terrain-lines/15/7360/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7361/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7362/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7363/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7364/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7365/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7366/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7367/14584.png
## Source : http://tile.stamen.com/terrain-lines/15/7360/14585.png
## Source : http://tile.stamen.com/terrain-lines/15/7361/14585.png
## Source : http://tile.stamen.com/terrain-lines/15/7362/14585.png
## Source : http://tile.stamen.com/terrain-lines/15/7363/14585.png
## Source : http://tile.stamen.com/terrain-lines/15/7364/14585.png
## Not Found (HTTP 404). Failed to aquire tile /terrain-lines/15/7364/14585.png.
## Source : http://tile.stamen.com/terrain-lines/15/7365/14585.png
## Not Found (HTTP 404). Failed to aquire tile /terrain-lines/15/7365/14585.png.
## Source : http://tile.stamen.com/terrain-lines/15/7366/14585.png
## Not Found (HTTP 404). Failed to aquire tile /terrain-lines/15/7366/14585.png.
## Source : http://tile.stamen.com/terrain-lines/15/7367/14585.png
## Not Found (HTTP 404). Failed to aquire tile /terrain-lines/15/7367/14585.png.

POdemos visualizar el mapa

ggmap(mapa_iztacalco)

Finalmente, podemos agregar los datos de las llamadas al 911 al mapa anterior

ggmap(mapa_iztacalco) +
  geom_sf(data = iztacalco, aes(color= incidente_c4), alpha=0.5, size= 0.8, show.legend = FALSE, inherit.aes = FALSE) +
  scale_color_viridis_d(option = "turbo") +
  labs(title = "Iztacalco: Llamadas al 911 según disturbio",
       subtitle = "Fuente: C5 Ciudad de México",
       caption = "@geogracelis") +
  labs(x = "Longitud", y = "Latitud")+
  theme (plot.title = element_text(family = "sans",
                                   size = rel(1), 
                                   vjust = 2, 
                                   face = "bold.italic", 
                                   color = "black", 
                                   lineheight = 1.5)) +
  theme (plot.subtitle = element_text(family = "sans",
                                   size = rel(0.8),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray40", 
                                   lineheight = 1.5)) +
  theme (plot.caption = element_text(family = "sans",
                                   size = rel(0.7),
                                   vjust = 2, 
                                   face = "italic", 
                                   color = "gray30", 
                                   lineheight = 1.5)) +
  theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="darkgray", size=rel(0.75))) +
  theme(axis.text.x = element_text(face="italic", colour="gray", size=rel(0.65)),
         axis.text.y = element_text(face="italic", colour="gray", size=rel(0.65), angle=90, hjust=0.5)) +
  theme(legend.title = element_text(face = "bold", colour="darkgray", size=rel(0.75))) +
  theme(legend.text = element_text(face="italic", colour="gray", size=rel(0.6)))
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.