Commit 670ef77b authored by numeroteca's avatar numeroteca

barras y coropletas ratios plazas / 100 hab

parent daab6e3a
......@@ -26,7 +26,7 @@ airbnb_1_date = "180922"
airbnb_1_year = "2018"
airbnb_1_label = "Septiembre 2018"
# Airbnb listings 2
airbnb_2_date = "180922"
airbnb_2_date = "190930"
airbnb_2_year = "2019"
airbnb_2_label = "Septiembre 2019"
......@@ -54,13 +54,13 @@ habitantes_distritos <- viviendas_barrios_raw%>%
group_by(DISTRITO) %>%
summarise(poblacion=sum(TOTAL)) %>%
ungroup()
write.csv(habitantes_distritos, file = "data/output/habitates-por-distrito-sevilla-2019.csv", row.names = FALSE)
write.csv(habitantes_distritos, file = "data/output/habitantes-por-distrito-sevilla-2019.csv", row.names = FALSE)
habitantes_barrios <- viviendas_barrios_raw %>%
group_by(BARRIO) %>%
summarise(poblacion=sum(TOTAL)) %>%
ungroup()
write.csv(habitantes_barrios, file = "data/output/habitates-por-barrio-sevilla-2019.csv", row.names = FALSE)
write.csv(habitantes_barrios, file = "data/output/habitantes-por-barrio-sevilla-2019.csv", row.names = FALSE)
# Airbnb listings 2019-02-27
......@@ -253,30 +253,35 @@ dev.off()
# ----- Prepara datos por barrios y distritos ------------------------------------------------------------------------------------
# agrupa datos añadiendo código de barrio
airbnb.barrios <- airbnbdata %>%
group_by(neighbourhood,neighbourhood_group) %>%
airbnb.barrios.plazas <- airbnbdata %>%
group_by(neighbourhood_cleansed) %>%
summarise(count=n()) %>%
ungroup() %>%
arrange(-count)
# adds room_type
airbnb.barrios.room_type <- airbnbdata %>%
group_by(neighbourhood,neighbourhood_group,room_type_s) %>%
airbnb.barrios.plazas.room_type <- airbnbdata %>%
group_by(neighbourhood_cleansed,room_type_s) %>%
summarise(count=n()) %>% #suma el número de items por barrio
mutate(suma=sum(count)) %>%
ungroup() %>%
arrange(-count)
# agrupa datos añadiendo código de distrito
airbnb.distritos <- airbnbdata %>%
group_by(neighbourhood) %>%
airbnb.distritos.plazas <- airbnbdata %>%
group_by(neighbourhood_group_cleansed) %>%
summarise(count=n()) %>%
ungroup() %>%
arrange(-count)
# nota: aquí se pierden 235 de ser contados porque caen fuera de los contornos de los barrios (ver airbnb.distritos). Insideairbnb si los detecta como que están
# barrios. Si se le quita el coddistrit del gropup_by pilla todo os anuncios
# sum(por_barrios[is.na(por_barrios$coddistbar),]$count)
# adds room_type
airbnb.distritos.plazas.room_type <- airbnbdata %>%
group_by(neighbourhood_group_cleansed,room_type_s) %>%
summarise(count=n()) %>% #suma el número de items por barrio
mutate(suma=sum(count)) %>%
ungroup() %>%
arrange(-count)
# Añade datos de vivienda a los datos de airbnb
por_barrios <- full_join(airbnb.barrios,select(viviendas_barrios,-barrio), by="coddistbar")
......@@ -533,54 +538,95 @@ library(gpclib)
library(maptools)
# load fresh data
barrios <- readOGR("data/original/shapes/barrios.valencia.wgs84.geojson")
barrios <- readOGR("data/original/contornos/barrios_geo.json")
distritos <- readOGR("data/original/contornos/distritos_geo.json")
habitantes_barrios <- read.delim("data/output/habitantes-por-distrito-sevilla-2019_name-fixed.csv", sep = ",")
# prepare and prepare data -----------------
# adds 0 to coddistbat to allow join
por_barrios$coddistbar <- as.character(por_barrios$coddistbar)
# add leading 0 to barrios with only two cifras in coddistbar
por_barrios <- por_barrios %>% mutate(
coddistbar = ifelse( nchar(coddistbar) == 2,
paste0("0",coddistbar),
coddistbar
)
)
por_barrios.viviendas$coddistbar <- as.character(por_barrios.viviendas$coddistbar)
# add leading 0 to barrios with only two cifras in coddistbar
por_barrios.viviendas <- por_barrios.viviendas %>% mutate(
coddistbar = ifelse( nchar(coddistbar) == 2,
paste0("0",coddistbar),
coddistbar
)
)
# prepare and prepare data -----------------
por_barrios.hab
# adds airbnb data to shapes
barrios@data <- left_join(barrios@data, por_barrios.viviendas,by="coddistbar")
barrios@data <- left_join(barrios@data, select(por_barrios,coddistbar,ratio2019_listings),by="coddistbar")
# barrios@data <- left_join(barrios@data, por_barrios.viviendas,by=c("neighbourhood" = "xxxx") )
# barrios@data <- left_join(barrios@data, select(por_barrios,coddistbar,ratio2019_listings),by="coddistbar")
# Add airbnb count
barrios@data <- left_join(barrios@data, airbnb.barrios.plazas ,by=c("neighbourhood" = "neighbourhood_cleansed") )
barrios@data <- left_join(barrios@data, habitantes_barrios, by=c("neighbourhood" = "barrio") )
# barrios@data <- left_join(barrios@data, airbnb.barrios.plazas , by=c("neighbourhood" = "neighbourhood_cleansed") )
fff <- barrios@data
barrios@data$ratio2019_plazasxhab <- round(barrios@data$plazas/ barrios@data$poblacion *100,digits = 2)
# barrios@data$ratio2019_airbnbxviv <- round(barrios@data$anuncios/ barrios@data$Total *100,digits = 2)
# barrios@data$ratio2019_airbnbvivxviv <- round(barrios@data$viviendas_completas/ barrios@data$Total *100,digits = 2)
# tmap numer of listings MAP ----------------
colores <- c("#ededed", "#0cb2ff")
breaks.n <- c(seq(0,2000,by = 250))
colores.r <- c("#ededed", "#fa8c00")
breaks.n <- c(seq(0,55,by = 250))
# png(filename="images/airbnb/mapa-coropletas-numero-anuncios-valencia-201909.png",width = 500,height = 600)
# Mapa de coropletas plazas de Airbnb por cada 100 habitantes
png(filename=paste0("images/airbnb/mapa-coropletas-ratio-plazas-habitantes-",city,"-",airbnb_2_date,".png"),width = 600,height = 600)
tm_shape(barrios) +
tm_polygons(col="count",
palette = colores,
tm_polygons(col="ratio2019_plazasxhab",
palette = colores.r,
# breaks = breaks.n,
title = "anuncios",
border.alpha = 1, lwd = 0.2, legend.show = T, legend.outside = T,
title = "",
border.alpha = 1, lwd = 0.7,
legend.show = T, legend.outside = T,
textNA="sin anuncios") +
tm_shape(distritos) +
tm_borders(lwd=0.7, col = "black") +
tm_text("name", size = 0.9, col = "black", remove.overlap = FALSE) +
tm_layout(between.margin = 5, frame = FALSE,
fontfamily = "Roboto Condensed",
title = "Anuncios airbnb" ,
title = "Plazas de airbnb por cada 100 habitantes. Sevilla. Sept. 2019" ,
main.title.size = 1.1,
title.size = 2,
title.position = c("center","top"),
title.fontface = "bold",
legend.format = list(text.separator = "-" )
) +
tm_legend(legend.text.size = 0.5,
legend.title.size = 2)
# dev.off()
legend.title.size = 1,
legend.text.size = 1.1,
legend.position = c("RIGHT","BOTTOM"),
legend.bg.color = "white",
legend.format = list(text.separator = "-"),
legend.bg.alpha =0.1
)
dev.off()
# Barras: ratio plazas por 100 habitantes barrios
png(filename=paste0("images/airbnb/barras-ratio-plazas-habitantes-",city,"-",airbnb_2_date,".png"),width = 600,height = 600)
barrios@data %>%
arrange(-ratio2019_plazasxhab) %>% head(25) %>%
ggplot(aes(x = reorder(neighbourhood, ratio2019_plazasxhab), y = ratio2019_plazasxhab)) + #order by Value or by -pos_ratio2019
geom_col(position = "dodge", aes(fill=ratio2019_plazasxhab),
color="#888888",size=0.2) +
# scale_y_continuous(limits = c(0,8.5), expand = c(0,0)) +
# scale_fill_gradient( low = "#ededed", high= "#0cb2ff") +
scale_fill_gradientn(colours = c("#ededed","#ededed","#f0d4b1","#f3bc76","#f6a43b","#fa8c00"),
values =scales::rescale(c(0,10,20,30,40,50))
) +
theme_minimal(base_family = "Roboto Condensed", base_size = 18) +
theme(
panel.grid.minor.y = element_blank(), panel.grid.major.y = element_blank(),
legend.position = "none",
plot.title = element_text(hjust = 1),
plot.subtitle = element_text(hjust = 1)
) +
labs(title = "Presencia de Airbnb en barrios. Top 25. Septiembre 2019. Sevilla",
subtitle = "Ratio de plazas de Airbnb por cada 100 habitantes",
y = "ratio plazas de Airbnb / 100 habitantes",
x = NULL,
caption = "Datos: InsideAirbnb. Gráfico: lab.montera34.com/airbnb") +
geom_text(aes(label = round(ratio2019_plazasxhab,digits=1), y= ratio2019_plazasxhab/2 ),
hjust = 0.5,
size=5,color="#777777",family = "Roboto Condensed") +
coord_flip()
dev.off()
# tmap Ratio anuncios / 100 viviendas ----------------
breaks.ratio <- c(0,1,2,4,6,8,10,12,14,16)
......@@ -742,6 +788,20 @@ tmap_save(interactive_map,"/home/numeroteca/sites/airbnb/valencia/output/html/ra
# Plazas de Airbnb por habitante -------------------------------
# agrupa datos porbarrio
airbnb.barrios.plazas <- airbnbdata %>%
group_by(neighbourhood_cleansed) %>%
summarise( plazas=sum(accommodates) ) %>%
ungroup() %>%
arrange(-plazas)
airbnb.barrios.plazas.room_type <- airbnbdata %>%
# filter(room_type=="Vivienda completa") %>%
group_by(neighbourhood_cleansed,room_type_s) %>%
summarise( plazas=sum(accommodates) ) %>%
ungroup() %>%
arrange(-plazas)
# agrupa datos por distrito
airbnb.distritos.plazas <- airbnbdata %>%
group_by(neighbourhood_group_cleansed) %>%
......@@ -752,13 +812,10 @@ airbnb.distritos.plazas <- airbnbdata %>%
airbnb.distritos.plazas.room_type <- airbnbdata %>%
# filter(room_type=="Vivienda completa") %>%
group_by(neighbourhood_group_cleansed,room_type_s) %>%
summarise(viviendas_completas=n()) %>% #suma el número de items por barrio
summarise(plazas=sum(accommodates),anuncios=n()) %>%
# filter( !is.na(coddistrit) ) %>%
ungroup() %>%
arrange(-viviendas_completas)
habitantes_distritos <- read.delim("data/output/habitates-por-distrito-sevilla-2019.csv", sep = ",")
arrange(-plazas)
# une datos de airbnb con datos de distritos
por_distritos.plazas <- full_join(airbnb.distritos.plazas,habitantes_distritos, by=c("neighbourhood_group_cleansed" = "distrito"))
......
barrio,distrito,poblacion
Aeropuerto Viejo,Macarena - Norte,3948
Alfalfa,Casco Antiguo,9490
Amate,Cerro - Amate,8924
Arbol Gordo,San Pablo - Santa Justa,2832
Arenal,Casco Antiguo,7374
Avda. de la Paz,Sur,5862
Bami,Palmera - Bellavista,7218
Bda. de Pineda,Palmera - Bellavista,1766
Bda. Pino Montano,Macarena - Norte,64414
Barrio León,Triana,6300
"Begoña, Santa Catalina",Macarena,6778
Bellavista,Palmera - Bellavista,32914
Campos de Soria,Macarena,6434
"Cisneo Alto, Santa María de Graccia",Macarena,3078
Ciudad Jardín,Nervión,7860
"Colores, Entreparques",Este - Alcosa - Torreblanca,95716
Consolación,Macarena - Norte,11714
"Cruz Roja, Capuchinos",Macarena,10642
"Doctor Barraquer, G. Renfe, Policlínico",Macarena,8240
El Carmen,Macarena,1912
,,5292
El Cerro,Cerro - Amate,23594
"Carretera de Carmona, María Auxiliadora, Fontanal",San Pablo - Santa Justa,10418
El Gordillo,Macarena - Norte,2664
"El Juncal, Híspalis",Sur,9760
El Plantinar,Sur,10512
El Porvenir,Sur,13008
"Prado, Parque María Luisa",Sur,1510
El Rocío,Macarena,4050
"El Tardón, El Carmen",Triana,15286
"El Torrejón, El Cerezo",Macarena,2600
"El Cano, Los Bermejales",Palmera - Bellavista,28292
"Encarnación, Regina",Casco Antiguo,8496
"Felipe II, Los Diez Mandamientos",Sur,4270
Feria,Casco Antiguo,13182
Giralda Sur,Sur,7112
Heliópolis,Palmera - Bellavista,3562
"Hermandades, La Carrasca",Macarena,12076
Huerta de la Salud,Sur,9604
Huerta de Santa Teresa,San Pablo - Santa Justa,12720
Huerta del Pilar,Nervión,14400
Juan XXIII,Cerro - Amate,15890
La Bachillera,Macarena - Norte,2818
La Barzola,Macarena,2774
La Buhaira,Nervión,21738
La Calzada,Nervión,8848
La Corza,San Pablo - Santa Justa,1890
La Florida,Nervión,5844
La Oliva,Sur,10626
"La Palmilla, Doctor Marañón",Macarena,3246
"La Paz, Las Golondrinas",Macarena,5748
La Plata,Cerro - Amate,26828
Las Almenas,Macarena - Norte,7498
Las Avenidas,Macarena,5598
Las Huertas,San Pablo - Santa Justa,9288
Las Letanías,Sur,7244
"Las Naciones, Parque Atlántico, Las Dalias",Macarena - Norte,6566
"León XIII, Los Naranjos",Macarena,11114
Los arcos,Macarena - Norte,5862
Los Carteros,Macarena - Norte,2016
Los Pajaros,Cerro - Amate,28460
"Los Príncipes, La Fontanilla",Macarena,12676
Los Remedios,Los Remedios,47002
"Macarena 3 Huertas, Macarena 5",Macarena,2792
Museo,Casco Antiguo,10822
Nervión,Nervión,29266
"Palacio Congresos, Urbadiez, Entrepuentes, Jardines del Eden",Este - Alcosa - Torreblanca,32448
Palmete,Cerro - Amate,36342
Parque Alcosa,Este - Alcosa - Torreblanca,45760
"Pedro Salvador, Las Palmeritas",Palmera - Bellavista,7142
Pino Flores,Macarena,4702
Pio XII,Macarena,8826
Polígono Norte,Macarena,10498
Polígono Sur,Sur,33418
Retiro Obrero,Macarena,2556
Rochelambert,Cerro - Amate,13194
San Bartolomé,Casco Antiguo,7748
San Bernardo,Nervión,6702
"San Carlos, Tartessos",San Pablo - Santa Justa,9144
San Diego,Macarena - Norte,8494
San Gil,Casco Antiguo,13766
San Jerónimo,Macarena - Norte,23044
San José Obrero,San Pablo - Santa Justa,18868
San Julián,Casco Antiguo,12192
San Lorenzo,Casco Antiguo,8454
San Matías,Macarena - Norte,1842
San Pablo A y B,San Pablo - Santa Justa,15008
San Pablo C,San Pablo - Santa Justa,7416
San Pablo D y E,San Pablo - Santa Justa,14570
an Roque,Nervión,8532
San Vicente,Casco Antiguo,11184
"Santa Aurelia, Cantábrico, Atlántico, La Romería",Cerro - Amate,25634
Santa Catalina,Casco Antiguo,9026
Santa Clara,San Pablo - Santa Justa,15410
Santa Cruz,Casco Antiguo,5022
"Santa Justa y Rufina, Parque Miraflores",Macarena,2440
"Santa María de Ordas, San Nicolas",Macarena,8436
"Sector Sur, La Palmera, Reina Mercedes",Palmera - Bellavista,10526
Tablada,Los Remedios,4064
"Tabladilla, La Estrella",Sur,10628
"Tiro de Línea, Santa Genoveva",Sur,10208
,,36698
Triana Casco Antiguo,Triana,14310
Triana Este,Triana,27146
Triana Oeste,Triana,32816
Valdezorras,Macarena - Norte,5638
Villegas,Macarena,6644
Zodiaco,San Pablo - Santa Justa,3236
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment