Los datos provistos por esta aplicación constituyen estadísticas
operacionales de la Policía de Puerto Rico. Su finalidad es única y
exclusivamente como medio informativo y pueden no reflejar los
porcentajes actuales. https://data.pr.gov/en/Seguridad-P-blica/Incidencia-Crime-Map/3fy3-2bc5.
Una copia parcial está disponible en el folder datos/
.
janitor
se puede usar para limpiar los
nombres de las columnaslibrary(janitor)
crm <- crimen %>%
clean_names() %>%
rename(longitud = point_y, latitud = point_x)
crm
## # A tibble: 8,870 × 7
## fecha hora delito delitos_code latitud longitud area_policiaca
## <chr> <time> <dbl> <chr> <dbl> <dbl> <chr>
## 1 8/1/16 15:30 9 Otros 18.4 -66.0 Carolina
## 2 8/1/16 13:20 9 Otros 18.2 -66.7 Utuado
## 3 8/1/16 21:25 6 Apropiacion Ilegal 18.4 -66.0 San Juan
## 4 8/1/16 02:35 9 Otros NA NA Aguadilla
## 5 8/1/16 08:00 9 Otros NA NA Carolina
## 6 8/1/16 18:18 6 Apropiacion Ilegal 18.4 -66.8 Arecibo
## 7 8/1/16 22:30 5 Escalamiento 18.0 -66.6 Ponce
## 8 8/1/16 13:30 6 Apropiacion Ilegal 18.3 -67.1 Mayaguez
## 9 8/1/16 22:44 1 Asesinato 18.4 -66.0 San Juan
## 10 8/1/16 17:19 5 Escalamiento 18.4 -66.0 Carolina
## # ℹ 8,860 more rows
filter()
remueva las coordenadas que son
inválidascrm <- crimen %>%
clean_names() %>%
filter(!is.na(point_x), point_x != 0) %>%
rename(longitud = point_y, latitud = point_x)
map_data()
, del paquete
ggplot2
, contiene el mapa mundial. El mapa de Puerto Rico
se puede acceder usando el argumento region
.geom_map()
para agregar la figura del
territorioggplot() +
geom_map(aes(long, lat, map_id = region), fill = "gray", map = pr, data = pr) +
geom_point(aes(longitud, latitud), data = crm)
theme_void()
remueve la información alrededor del
mapaggplot() +
geom_map(aes(long, lat, map_id = region), fill = "gray", map = pr, data = pr) +
geom_point(aes(longitud, latitud), color = "blue", size = 0.1, data = crm) +
theme_void()
ggplot() +
geom_map(aes(long, lat, map_id = region), fill = "gray", map = pr, data = pr) +
geom_point(aes(longitud, latitud, color = area_policiaca), size = 0.5, data = crm) +
theme_void() +
theme(legend.position = "bottom")
facet_wrap()
permite crear una “mini” gráfica por cada
segmento de los datos. En este caso, area_policiaca
ggplot() +
geom_map(aes(long, lat, map_id = region), fill = "gray", map = pr, data = pr) +
geom_point(aes(longitud, latitud, color = area_policiaca), size = 0.2, data = crm) +
theme_void() +
facet_wrap(~delitos_code)
ggplot() +
geom_map(aes(long, lat, map_id = region), fill = "black", map = pr, data = pr) +
geom_point(aes(longitud, latitud), alpha = 0.2, size = 0.1, color = "#ffff00", data = crm) +
theme_void() +
theme(panel.background = element_rect(fill = "#333333")) +
facet_wrap(~delitos_code)
Leaflet (https://leafletjs.com/) es una librería de JavaScript
que se utiliza para hacer mapas interactivos. Es la más usada hoy en
día. El paquete de R llamado leaflet
permite la integración
con esta librería.
En lugar de usar +
, leaflet
utiliza el pipe
(%>%
) para crear las visualizaciones. Se necesita
addTiles()
para agregar el mapa, y después algún tipo de
puntos geográficos.
library(leaflet)
library(lubridate)
crm$fecha2=mdy(crm$fecha) # convierte la columna de fecha de "character" as "mdy" con el paquete lubridate
crm %>%
filter(month(fecha2) == 8) %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud)
Ya que son interactivos, se pueden agregar nombres que salen cuando se hace un click al punto
crm %>%
filter(month(fecha2) == 8) %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud, popup = ~delitos_code)
crm %>%
filter(month(fecha2) == 8) %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud, popup = ~paste0("Delito: ",delitos_code))
markerClusterOptions()
agrupa los puntos automaticamente
para que la interactividad sea más fácil
crm %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud, popup = ~paste0("Delito: ",delitos_code),
clusterOptions = markerClusterOptions())
crm %>%
filter(delitos_code == "Vehiculo Hurtado") %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud, popup = ~paste0("Delito: ",delitos_code),
clusterOptions = markerClusterOptions())
<https://fontawesome.com/icons>
crm %>%
filter(delitos_code == "Vehiculo Hurtado") %>%
leaflet() %>%
addTiles() %>%
addAwesomeMarkers(~longitud, ~latitud, popup = ~paste0("Delito: ",delitos_code), clusterOptions = markerClusterOptions(), icon = awesomeIcons(icon = "fa-solid fa-car", library = "fa"))
Los datos provienen del siguiente enlace <https://www.bco-dmo.org/dataset/3421>
Información del website
“Visual surveys for cetaceans and penguins were conducted during daylight hours on all days when weather conditions allowed on the Antarctic Peninsula, in the austral autumns and winters of 2000-2002.
Objectives:
taxon | cruise_id | year | sight_num | date_gmt | month_gmt | day_gmt | time_gmt | yrday_gmt | lat | lon | observer | species | bearing | distance_nm | count | reticle | method_sighting | on_ice_YN | cue | group_max | group_min | ice_cover |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cetacean | LMG0103 | 2001 | 1 | 3/23/01 | 03 | 23 | 13:48:02 | 81.57502 | -63.2027 | -61.6812 | MM | nd | 0 | 1.5 | nd | 0 | 1 | nd | 1 | nd | nd | 0 |
cetacean | LMG0103 | 2001 | 2 | 3/23/01 | 03 | 23 | 13:48:02 | 81.57502 | -63.2027 | -61.6812 | MM | unidentified_large_whale | 0 | 1.5 | 2 | 0 | 1 | nd | 1 | 2 | 2 | 0 |
cetacean | LMG0103 | 2001 | 3 | 3/23/01 | 03 | 23 | 13:48:02 | 81.57502 | -63.2027 | -61.6812 | MM | unidentified_large_whale | 0 | 1.5 | 2 | 0 | 1 | nd | 1 | 2 | 2 | 0 |
cetacean | LMG0103 | 2001 | 4 | 3/23/01 | 03 | 23 | 14:35:16 | 81.60783 | -63.3243 | -61.5970 | DT | nd | 80 | 2.3 | nd | 0 | 1 | nd | 1 | nd | nd | 0 |
cetacean | LMG0103 | 2001 | 5 | 3/23/01 | 03 | 23 | 14:35:16 | 81.60783 | -63.3243 | -61.5970 | DT | nd | 80 | 2.3 | 0 | 0 | 1 | nd | 1 | 0 | 0 | 0 |
cetacean | LMG0103 | 2001 | 6 | 3/23/01 | 03 | 23 | 14:44:38 | 81.61433 | -63.3488 | -61.5827 | SM | nd | 150 | 2.0 | nd | 0 | 1 | nd | 1 | nd | nd | 0 |
## [1] 2001 2002
Por ejemplo aqui: https://github.com/lennardv2/Leaflet.awesome-markers