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/
.
## # A tibble: 6 × 7
## Fecha Hora Delito Delitos_code POINT_X POINT_Y `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
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) %>% # remueve coordenadas inválidas
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
.## long lat group order region subregion
## 1 -67.87247 18.05986 1 1 Puerto Rico Isla de Mona
## 2 -67.88184 18.05894 1 2 Puerto Rico Isla de Mona
## 3 -67.89117 18.05991 1 3 Puerto Rico Isla de Mona
## 4 -67.89546 18.06279 1 4 Puerto Rico Isla de Mona
## 5 -67.90190 18.07187 1 5 Puerto Rico Isla de Mona
## 6 -67.93037 18.08691 1 6 Puerto Rico Isla de Mona
## 7 -67.93706 18.10064 1 7 Puerto Rico Isla de Mona
## 8 -67.93062 18.11514 1 8 Puerto Rico Isla de Mona
## 9 -67.91895 18.12090 1 9 Puerto Rico Isla de Mona
## 10 -67.86108 18.12256 1 10 Puerto Rico Isla de Mona
## 11 -67.85518 18.12114 1 11 Puerto Rico Isla de Mona
## 12 -67.84365 18.11104 1 12 Puerto Rico Isla de Mona
## 13 -67.84336 18.10395 1 13 Puerto Rico Isla de Mona
## 14 -67.84907 18.09702 1 14 Puerto Rico Isla de Mona
## 15 -67.85918 18.07959 1 15 Puerto Rico Isla de Mona
## 16 -67.86343 18.07520 1 16 Puerto Rico Isla de Mona
## 17 -67.86680 18.07066 1 17 Puerto Rico Isla de Mona
## 18 -67.86811 18.06279 1 18 Puerto Rico Isla de Mona
## 19 -67.87247 18.05986 1 19 Puerto Rico Isla de Mona
## 21 -65.42558 18.10562 2 21 Puerto Rico Vieques Island
## 22 -65.50401 18.09951 2 22 Puerto Rico Vieques Island
## 23 -65.55508 18.10767 2 23 Puerto Rico Vieques Island
## 24 -65.57221 18.13730 2 24 Puerto Rico Vieques Island
## 25 -65.47715 18.16504 2 25 Puerto Rico Vieques Island
## 26 -65.36621 18.16108 2 26 Puerto Rico Vieques Island
## 27 -65.30269 18.14438 2 27 Puerto Rico Vieques Island
## 28 -65.29488 18.13335 2 28 Puerto Rico Vieques Island
## 29 -65.42558 18.10562 2 29 Puerto Rico Vieques Island
## 31 -66.12939 18.44492 3 31 Puerto Rico <NA>
## 32 -66.09849 18.42520 3 32 Puerto Rico <NA>
## 33 -66.06841 18.42803 3 33 Puerto Rico <NA>
## 34 -66.09267 18.46899 3 34 Puerto Rico <NA>
## 35 -66.07040 18.46899 3 35 Puerto Rico <NA>
## 36 -65.87876 18.44385 3 36 Puerto Rico <NA>
## 37 -65.75557 18.40161 3 37 Puerto Rico <NA>
## 38 -65.62881 18.38140 3 38 Puerto Rico <NA>
## 39 -65.62085 18.24233 3 39 Puerto Rico <NA>
## 40 -65.71841 18.18667 3 40 Puerto Rico <NA>
## 41 -65.78223 18.12861 3 41 Puerto Rico <NA>
## 42 -65.83413 18.05733 3 42 Puerto Rico <NA>
## 43 -65.97080 17.97437 3 43 Puerto Rico <NA>
## 44 -66.13550 17.94946 3 44 Puerto Rico <NA>
## 45 -66.24502 17.94727 3 45 Puerto Rico <NA>
## 46 -66.28589 17.94995 3 46 Puerto Rico <NA>
## 47 -66.32578 17.96416 3 47 Puerto Rico <NA>
## 48 -66.40855 17.95059 3 48 Puerto Rico <NA>
## 49 -66.51079 17.98701 3 49 Puerto Rico <NA>
## 50 -66.59843 17.97788 3 50 Puerto Rico <NA>
## 51 -66.77242 17.98657 3 51 Puerto Rico <NA>
## 52 -66.83759 17.95508 3 52 Puerto Rico <NA>
## 53 -66.90000 17.94790 3 53 Puerto Rico <NA>
## 54 -66.96123 17.95376 3 54 Puerto Rico <NA>
## 55 -67.01333 17.96787 3 55 Puerto Rico <NA>
## 56 -67.14239 17.96670 3 56 Puerto Rico <NA>
## 57 -67.19688 17.99419 3 57 Puerto Rico <NA>
## 58 -67.17432 18.15254 3 58 Puerto Rico <NA>
## 59 -67.17245 18.22422 3 59 Puerto Rico <NA>
## 60 -67.20415 18.28340 3 60 Puerto Rico <NA>
## 61 -67.23896 18.32065 3 61 Puerto Rico <NA>
## 62 -67.26407 18.36460 3 62 Puerto Rico <NA>
## 63 -67.21338 18.39360 3 63 Puerto Rico <NA>
## 64 -67.17178 18.43579 3 64 Puerto Rico <NA>
## 65 -67.15864 18.49922 3 65 Puerto Rico <NA>
## 66 -67.11304 18.51480 3 66 Puerto Rico <NA>
## 67 -67.05962 18.52217 3 67 Puerto Rico <NA>
## 68 -66.81289 18.49253 3 68 Puerto Rico <NA>
## 69 -66.18858 18.47578 3 69 Puerto Rico <NA>
## 70 -66.15308 18.47065 3 70 Puerto Rico <NA>
## 71 -66.12939 18.44492 3 71 Puerto Rico <NA>
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-thin fa-truck", 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