Limpiamos el environment y cargamos los paquetes necesarios Cargamos la base de datos de los accidentes de bici. Junto con cargar la base en formato shape y luego modificarla para usar data table.
Muestre el número total de accidentes según su tipo (ayuda: utilice TIPO_ACCID).
accbici= bici[,.(total=.N), by=.(TIPO_ACCID)]
ggplot(accbici, aes(x=TIPO_ACCID, y= total)) + geom_bar(stat="identity")
## Pregunta 3
Si bien el gráfico anterior muestra la información pedida, no se encuentra bien desplegada (dificil de leer). En consecuencia, es necesario perfeccionarlo:
Ordene los tipos de accidentes según cantidad.
Agregue titulo y pie de página.
Modifique los nombres de los ejes.
Invierta los ejes.
ggplot(accbici,aes(x=reorder(TIPO_ACCID,total),y=total)) +
geom_bar(stat='identity') +
labs(title = 'Cantidad de accidentes de bicicletas', subtitle = 'Según tipo de accidente',
caption = 'Datos año 2016 - IDE Chile',
x = 'Tipo de accidente',y = 'N° de accidentes')+
theme(axis.text.x = element_text(angle=90, vjust=0.5)) + scale_fill_brewer(palette = "Blues")
Muestre, mediante un histográma y gráfico de densidad, la distribución de accidentes según la hora de ocurrencia (ayuda: HORA puede transformarse de caracter a tiempo mediante función as.ITime).
bici[,HORA:= as.ITime(HORA)]
ggplot(bici, aes(x=HORA))+
geom_histogram()+
scale_x_time()#con esto se arregla la escala del tiempo en el eje x
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(bici, aes(x=HORA))+
geom_density()+
geom_histogram()+
scale_x_time()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Pregunta 5
Para los dos gráficos anteriores, haga las siguientes modificaciones:
Muestre el histograma de los accidentes según su tipo (ayuda: utilice TIPO__CONA). Haga un fill por dicha variable, al mismo tiempo que elimina la leyenda.
Para el gráfico de distribución incluya una linea vetical que represente la hora promedio en la cual ocurren los accidentes. Incluya otra con la mediana. Modifique también la escala del eje y.
ggplot(bici,aes(x=HORA,fill=TIPO__CONA)) +
geom_histogram(color='black') + #haciendo un grafico para cada categoría se pone ~ para ver por qué variable se va a separar
facet_wrap(~TIPO__CONA,scale='free_y') +
scale_x_time() +
theme_classic() +
theme(legend.position = 'none')
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(bici, aes(x=HORA))+
geom_density()+
geom_vline(aes(xintercept= mean(HORA), color='Media'))+
geom_vline(aes(xintercept=median(HORA), color='Mediana'))+
scale_x_time()+
theme_classic()+
theme(legend.position = "bottom")+
labs(colour=NULL) +
scale_y_continuous(labels=number_format(suffix = '%', scale=100))
#MAPAS ## Pregunta 6
Haga un mapa exploratorio (en ggplot2) sobre la ubicación de los accidentes Recomendación: usar base mapa_zonas (chilemapas) y filtrar por región metropolitana.
ggplot(bici, aes(geometry=geometry))+
geom_sf()+ #se usa para hacer mapas en ggplot+
geom_sf(data=mapa_zonas %>% filter(codigo_region=='13'), fill=NA)+
coord_sf(xlim= c(-70.85,-70.45), ylim = c(-33.65,-33.3))+
theme_void()#para quitarle el sistema de coordenadas
## Pregunta 7
Mediante el paquete leaflet, muestre el número de accidentes por comuna. Para lo anterior, utilice la base “mapa_comunas” (chilemapas) y filtre por la región Metropolitana. Haga un merge entre dicho mapa y los datos de accidentes por comuna. Transforme dicho objeto a clase “sf” y modifique la proyección del objeto a “+proj=longlat +datum=WGS84”. Enchulelo.
mapa_comunas = mapa_comunas %>% filter(codigo_region == '13')
bici=bici[,.(total=.N),by=.(COD_COMUNA)]
bici[,COD_COMUNA:=as.character(COD_COMUNA)]
mapa=merge(x=mapa_comunas, y=bici, by.y="COD_COMUNA", by.x='codigo_comuna')
mapa= st_as_sf(mapa)
mapa=st_transform(mapa,crs ="+proj=longlat +datum=WGS84" )
#queremos transformar un mapa en una proyección
pal= colorBin("Set3", domain=c(mapa$total))
leaflet(mapa) %>%
addTiles()%>%
addPolygons(fillColor = ~pal(total), fillOpacity = 0.5, weight = 2, col="black", dashArray = 'J',
label = ~paste("Accidentes:", round(total, 2)))%>%
addLegend(pal = pal, values = ~total, position = "bottomright", title = ~paste0("Total accidentes")) %>%
addScaleBar(position="topright")