library(tidyverse)
## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0 ✓ purrr 0.3.3
## ✓ tibble 2.1.3 ✓ dplyr 0.8.5
## ✓ tidyr 1.0.2 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(sf)
## Linking to GEOS 3.7.2, GDAL 2.4.2, PROJ 5.2.0
I. Del portal de datos abiertos de Barcelona, utilizaremos un dataset espacial con los límites de barrios y distritos:
barris_districtes <- st_read("bcn_UNITATS_ADM_POLIGONS.json")
## Reading layer `bcn_UNITATS_ADM_POLIGONS' from data source `/Users/lousil/Google Drive/Formación Académica/ECONOMIA URBANA/14. CIENCIA DE DATOS PARA CIUDADES/Ciencia de Datos para Ciudades I/Clase 1/Ciencia de Datos para ciudades 2/bcn_UNITATS_ADM_POLIGONS.json' using driver `GeoJSON'
## Simple feature collection with 1501 features and 35 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: 420812.5 ymin: 4574282 xmax: 435480.4 ymax: 4591066
## epsg (SRID): 25831
## proj4string: +proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
Vemos que el sistema de coordenadas de referencia (CRS) es 25831, por lo tanto no es Merkator. Para cambiarlo podemos usar esta función:
barris_districtes <- st_transform(barris_districtes, crs = 4326)
names(barris_districtes)
## [1] "FID" "ID_ANNEX" "ANNEXDESCR" "ID_TEMA" "TEMA_DESCR"
## [6] "ID_CONJUNT" "CONJ_DESCR" "ID_SUBCONJ" "SCONJ_DESC" "ID_ELEMENT"
## [11] "ELEM_DESCR" "NIVELL" "NDESCR_CA" "NDESCR_ES" "NDESCR_EN"
## [16] "TERME" "DISTRICTE" "BARRI" "AEB" "SEC_CENS"
## [21] "GRANBARRI" "ZUA" "AREA_I" "LITERAL" "PERIMETRE"
## [26] "AREA" "CODI_UA" "TIPUS_UA" "NOM" "WEB1"
## [31] "WEB2" "WEB3" "FHEX_COLOR" "Shape_Leng" "Shape_Area"
## [36] "geometry"
Como el dataset posee 36 variables, de las cual necesitamos solo unas pocas, seleccionaremos y filtraremos solo lo que necesitamos para disminuir el gran tamaño del archivo:
barris_districtes <- barris_districtes %>%
select(DISTRICTE, BARRI, AREA, NOM, geometry) %>%
filter (!(DISTRICTE == "-") & !(BARRI== "-")) %>%
group_by(DISTRICTE,BARRI) %>%
summarise()
biblioteques <- read.csv("bcn_Biblioteques_i_museus.csv")
Por alguna razón que desconocemos, aparecen varias observaciones del mismo equipamiento. Por tal motivo, agruparemos segun equipamiento para que nos quede una observación para cada uno y luego las cuente correctamente.
biblioteques <- biblioteques %>%
group_by(EQUIPAMENT,LONGITUD, LATITUD) %>%
summarise()
Visualicemos ambos datasets superpuestos:
ggplot()+
geom_sf(data = barris_districtes, aes(fill=DISTRICTE), color = NA) +
geom_point(data = biblioteques, aes(x=LONGITUD, y=LATITUD), alpha=.8) +
labs(title = "Bibliotecas y Museos",
subtitle = "Por distrito",
fill = "Distritos",
caption= "Fuente: Ajuntament de Barcelona | 2020",
y="",
x="")
Convertimos el dataset de bibliotecas a espacial:
biblioteques_espacial <- biblioteques %>%
st_as_sf(coords = c("LONGITUD", "LATITUD"), crs = 4326)
…Y unimos:
biblioteques_districtes <- st_join(barris_districtes, biblioteques_espacial)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
biblioteques_perdistrictes <- biblioteques_districtes %>%
group_by(DISTRICTE) %>%
summarise(Frecuencia = n())
ggplot(biblioteques_perdistrictes) +
geom_bar(aes( x = DISTRICTE, weight = Frecuencia), fill="#69b3a2") +
labs(title = "Cantidad de Bibliotecas y Museos por distrito",
subtitle = "Por distrito",
caption= "Fuente: Ajuntament de Barcelona | 2020",
y="Cantidad",
x="Distritos")
Ahora ponderaremos según cantidad de Museos y Bicliotecas con scale_viridis:
ggplot(biblioteques_perdistrictes) +
geom_bar(aes( x = DISTRICTE, weight = Frecuencia, fill=Frecuencia)) +
scale_fill_viridis_c() +
labs(title = "Cantidad de Bibliotecas y Museos por distrito",
subtitle = "Por distrito",
fill = "Escala",
caption= "Fuente: Ajuntament de Barcelona | 2020",
y="Cantidad",
x="Distritos")
ggplot() +
geom_sf(data = biblioteques_perdistrictes, aes(fill=Frecuencia), color = NA) +
scale_fill_viridis_c() +
labs(title = "Cantidad de Bibliotecas y Museos",
subtitle = "Por distrito",
fill = "Escala",
caption= "Fuente: Ajuntament de Barcelona | 2020",
y="",
x="")