#'############################################### # PRACTICA 3: GRAFICOS DE DATOS DE SALUD Y CLIMA #'############################################### # LIBRERIAS ------------------------------------------------------------------- library(tidyverse) library(aweek) library(lubridate) library(sf) library(janitor) library(ggsn) # BASE DE DATOS --------------------------------------------------------------- # Cargamos la data con el comando readRDS salud_clima_lamb<-readRDS(file = "data_cruda/salud_clima_lamb.rds") salud_clima_dep<-readRDS(file = "data_cruda/salud_clima_departamento.rds") # PROCEDIMIENTO --------------------------------------------------------------- # primero preparamos la data que queremos visualizar. # Vamos a calcular una matriz con a nivel semanal # tanto para la provincias de Lambayeque y para Departamentos del Perú # para la base con datos de Lambayeque, agrupamos por semana y provincia, # luego calculamos sumas para los casos y pp y promedios para las temperaturas. casos_semanales_lamb<-salud_clima_lamb %>% group_by(semana,provincia)%>% summarise(casos=sum(casos), tmax=mean(tmax_sem_prov,na.rm=T), tmin=mean(tmin_sem_prov,na.rm=T), tmean=mean(tmean_sem_prov,na.rm=T), pp=mean(pp_sem_prov,na.rm=T))%>% ungroup() salud_clima_lamb<-salud_clima_lamb%>% rename(tmax=tmax_sem_prov, tmin=tmin_sem_prov, tmean=tmean_sem_prov, pp=pp_sem_prov) # el mismo procedimiento se realiza para la base de departamentos, # antes necesitamos crear la observacion semana para agrupar por esta. salud_clima_dep<-salud_clima_dep%>% mutate(semana=as.integer(substring(fechaepi,7,8))) casos_semanales_dep<-salud_clima_dep %>% group_by(semana,departamento)%>% summarise(casos=sum(casos), tmax=mean(tmax,na.rm=T), tmin=mean(tmin,na.rm=T), tmean=mean(tmean,na.rm=T), pp=mean(pp,na.rm=T))%>% ungroup() # 1) Graficos de lineas ---- ## 1.1) casos de dengue ### 1.1.1)casos de dengue por semana Lambayeque linea_casos_semanales_lamb<-ggplot(data=casos_semanales_lamb,aes(x=semana))+ geom_line(aes(y=casos),color="steelblue4", lwd=0.5)+ #agregamos geom de linea, color "steelblue" y ancho de linea de 0.5 scale_x_continuous(breaks=1:53,expand = c(0,0)) + #escalamos el eje X como una variable continua con valores de 1:53 y eliminamos el espacio entre ejes scale_y_continuous(expand = c(0,0))+ theme_bw() + #seleccionamos tema de defecto BW de ggplot2 theme(axis.text.x = element_text(size = 6))+ #cambiamos el tamaño del texto del eje x labs(x="Semanas",y="Casos de dengue", caption = "Fuente: Elaboración propia", title = "Casos de Dengue Semanales para provincias de Lambayeque, periodo 2010-2020")+ facet_wrap(~provincia,nrow = 3,scales="free_y") #creamos facetas segun las provincias ggsave(linea_casos_semanales_lamb,filename = "graficos/1.1.1 Casos de dengue por semana.jpg", width = 9.0,height = 4.5) ### 1.1.2) Linea de tiempo de casos de dengue para Lambayeque linea_casos_totales_lamb<-ggplot(data=salud_clima_lamb,aes(x=fecha,y=casos))+ geom_line(color="steelblue4", lwd=0.5)+ scale_x_date(expand = c(0,0),date_labels = "%W-%Y", breaks = "12 weeks") + #comando para escalar el eje X a una fecha scale_y_continuous(expand = c(0,0))+ geom_vline(xintercept=as.Date(seq(from = as.Date("2010-01-01"), to = as.Date("2021-01-01"),by = "1 year")), linetype=4)+ #dibujamos lineas verticales en cada año theme_bw()+ theme(axis.text.x = element_text(angle=90))+ labs(x="Semana Epidemeológia",y="Casos de dengue", caption = "Fuente: Elaboración propia", title = "Casos de Dengue en Lambayeque, periodo 2010-2020")+ facet_wrap(~provincia,nrow = 3,scales="free_y") ggsave(plot = linea_casos_totales_lamb,filename = "graficos/1.1.2 linea de tiempo de casos de dengue.jpg", width = 9.0,height = 4.5) ## 1.2) temperatura ###1.2.1) Temperatura por semana linea_temp_semanal_lamb<-ggplot(data=casos_semanales_lamb,aes(x=semana))+ geom_line(aes(y=tmax,color="Tmax"), lwd=0.8)+ geom_line(aes(y=tmin,color="Tmin"), lwd=0.8)+ geom_line(aes(y=tmean,color="Tmean"), lwd=0.8)+ scale_x_continuous(breaks=1:53,expand = c(0,0)) + theme_bw() + theme(axis.text.x = element_text(size = 6), legend.position = "bottom")+ labs(x="Semanas",y="Temperatura (ºC)", caption = "Fuente: Elaboración propia", title = "Promedio Semanales de Temperatura para Lambayeque, periodo 2010-2020", color="")+ facet_wrap(~provincia,nrow = 3,scales="free_y") ggsave(linea_temp_semanal_lamb,filename = "graficos/1.2.1 linea Temperatura por semana.jpg", width = 9.0,height = 4.5) ### 1.2.2) linea de tiempo de temperatura linea_temp_total_lamb<-ggplot(data=salud_clima_lamb,aes(x=fecha))+ geom_line(aes(y=tmax,color="Tmax"), lwd=0.8)+ geom_line(aes(y=tmin,color="Tmin"), lwd=0.8)+ geom_line(aes(y=tmean,color="Tmean"), lwd=0.8)+ scale_x_date(expand = c(0,0),date_labels = "%W-%Y", breaks = "12 weeks") + scale_y_continuous(expand = c(0,0))+ geom_vline(xintercept=as.Date(seq(from = as.Date("2010-01-01"), to = as.Date("2021-01-01"),by = "1 year")), linetype=4)+ theme_bw()+ theme(axis.text.x = element_text(angle=90,size = 8), legend.position = "bottom")+ labs(x="Fecha",y="Temperatura (ºC)", caption = "Fuente: Elaboración propia", title = "Temperatura semanal de Lambayeque, periodo 2010-2020", color="")+ facet_wrap(~provincia,nrow = 3,scales="free_y") ggsave(plot = linea_temp_total_lamb,filename = "graficos/1.2.2 linea de tiempo de temperatura.png", width = 9.0,height = 4.5) # 2) Graficos de heat map ---- ## 2.1) casos ###casos de dengue por semana tiles_casos_semanales<-ggplot(data=casos_semanales_dep,aes(x=semana,y=departamento))+ geom_tile(aes(fill=casos))+ scale_x_continuous(breaks=1:53,expand = c(0,0)) + scale_y_discrete(expand = c(0,0))+ scale_fill_viridis_c(trans="log",option = "plasma",breaks=c(1,10,100,1000))+ theme_bw()+ theme(legend.position = "bottom", axis.text.x = element_text(size = 7), axis.text.y = element_text(size = 7))+ labs(x="Semanas",y="Departamento", caption = "Fuente: Elaboración propia", title = "Casos de Dengue Semanales, periodo 2010-2020", fill="Casos") ggsave(tiles_casos_semanales,filename = "graficos/2.1 Heatmap de dengue por semana.jpg", width = 9.0,height = 4.5) ## 2.2) temperatura media tiles_temp_semanal<-ggplot(data=casos_semanales_dep,aes(x=semana,y=departamento))+ geom_tile(aes(fill=tmean))+ scale_x_continuous(breaks=1:53,expand = c(0,0)) + scale_y_discrete(expand = c(0,0))+ scale_fill_gradientn(colours = c("#053061","#246BAE",#549EC9","#A6CFE3", "#E1EDF3","#FAE7DC","#F7B799","#DC6F58", "#B6202E","#67001F"))+ theme_bw()+ theme(legend.position="bottom",axis.text.x = element_text(size = 7), axis.text.y = element_text(size = 7))+ labs(x="Semanas",y="Departamento", caption = "Fuente: Elaboración propia", title = "Temperatura media semanal, periodo 2010-2020", fill="Temperatura (ºC)") ggsave(tiles_temp_semanal,filename = "graficos/2.2 Heatmap de temperatura media por semana.jpg", width = 9.0,height = 4.5) ## 2.3) precipitacion tiles_pp_semanal<-ggplot(data=casos_semanales_dep,aes(x=semana,y=departamento))+ geom_tile(aes(fill=pp))+ scale_x_continuous(breaks=1:53,expand = c(0,0)) + scale_y_discrete(expand = c(0,0))+ scale_fill_viridis_c(trans="log",breaks=c(1,10,100,1000))+ theme_bw()+ theme(legend.position="bottom",axis.text.x = element_text(size = 7), axis.text.y = element_text(size = 7))+ labs(x="Semanas",y="Departamento", caption = "Fuente: Elaboración propia", title = "Precipitación Media Semanal, periodo 2010-2020", fill="precipitación (mm)") ggsave(tiles_pp_semanal,filename = "graficos/2.3 Heatmap de pp media por semana.jpg", width = 9.0,height = 4.5) # 3) Graficos de barras ---- ## 3.1) Casos semanales de dengue para Lambayeque barras_casos_semanal_lamb<-ggplot(data=casos_semanales_lamb,aes(x=semana,y=casos,fill=provincia))+ geom_col(position = "dodge")+ scale_x_continuous(breaks=1:53,expand = c(0,0))+ scale_y_continuous(expand = c(0,0))+ scale_fill_viridis_d()+ theme_bw()+ theme(legend.key.height = unit(0.1, 'cm'), #cambia la altura de la legenda legend.key.width = unit(0.1, 'cm'), #cambia el ancho de la leyenda legend.title = element_text(size=8), #cambia el texto del titulo de la leyenda legend.text = element_text(size=6), #cambia el texto de los elementos de la leyenda legend.position = "bottom", legend.background = element_rect(linetype = 1, size = 0.5, colour = 1), axis.text.x = element_text(size = 6), axis.text.y = element_text(size = 6)) + labs(x="Semana",y="Promedios semanales de Casos de dengue", caption = "Fuente: Elaboración propia", title = "Promedios semanales de Casos de dengue en provincia de Lambayeque, periodo 2010-2020", fill="Provincias") ggsave(barras_casos_semanal_lamb,filename = "graficos/3.1 Barras de casos por semana lamb.jpg", width = 9.0,height = 4.5) ## 3.2) Casos semanales de dengue por departamento barras_casos_semanal_dep<-ggplot(data=casos_semanales_dep,aes(x=semana,y=casos,fill=departamento))+ geom_col(position = "stack")+ scale_x_continuous(breaks=1:53,expand = c(0,0))+ scale_y_continuous(expand = c(0,0))+ scale_fill_viridis_d()+ theme_bw()+ theme(legend.key.height = unit(0.1, 'cm'), #cambia la altura de la legenda legend.key.width = unit(0.1, 'cm'), #cambia el ancho de la leyenda legend.title = element_text(size=8), #cambia el texto del titulo de la leyenda legend.text = element_text(size=6), #cambia el texto de los elementos de la leyenda legend.position = "bottom", legend.background = element_rect(linetype = 1, size = 0.5, colour = 1), axis.text.x = element_text(size = 6), axis.text.y = element_text(size = 6)) + labs(x="Semana",y="Promedios semanales de Casos de dengue", caption = "Fuente: Elaboración propia", title = "Promedios semanales de Casos de dengue por departamento, periodo 2010-2020", fill="Departamentos") ggsave(barras_casos_semanal_dep,filename = "graficos/3.2 Barras de casos por semana dep.jpg", width = 9.0,height = 4.5) ## 3.3) Precipitacion barras_pp_semanal<-ggplot(data=casos_semanales_dep,aes(x=semana,y=pp,fill=departamento))+ geom_col(position = "stack")+ scale_x_continuous(breaks=1:53,expand = c(0,0))+ scale_y_continuous(expand = c(0,0))+ scale_fill_viridis_d()+ theme_bw()+ theme(legend.key.height = unit(0.1, 'cm'), #cambia la altura de la legenda legend.key.width = unit(0.1, 'cm'), #cambia el ancho de la leyenda legend.title = element_text(size=8), #cambia el texto del titulo de la leyenda legend.text = element_text(size=6), #cambia el texto de los elementos de la leyenda legend.position = "bottom", legend.background = element_rect(linetype = 1, size = 0.5, colour = 1), axis.text.x = element_text(size = 6), axis.text.y = element_text(size = 6)) + labs(x="Semana",y="Precipitación (mm)", caption = "Fuente: Elaboración propia", title = "Promedio semanal de Precipitación por Departamento, periodo 2010-2020", fill="Departamentos") ggsave(barras_pp_semanal,filename = "graficos/3.3 Barras de pp por semana dep.jpg", width = 9.0,height = 4.5) # 4) Graficos de combinados ---- ## 4.1) graficos de barras de casos/ lineas de PP casos_semanales_dep_lamb<-casos_semanales_dep%>% filter(departamento=="LAMBAYEQUE") casos_pp_tambopata<-ggplot(data=casos_semanales_dep_lamb,aes(x=semana))+ geom_col(aes(y=casos),fill="steelblue4")+ geom_line(aes(y=pp*2,color="Promedio semanal de Precipitación"), lwd=0.8)+ geom_smooth(aes(y=pp*2,color="Linea de Tendencia de la Precipitación"), lwd=0.8,se = F)+ scale_x_continuous(breaks=1:53,expand = c(0,0))+ scale_y_continuous(expand = c(0,0), sec.axis = sec_axis(~./2, name = "Precipitación [mm]"))+ theme_bw()+ theme(legend.key.height = unit(0.1, 'cm'), #cambia la altura de la legenda legend.key.width = unit(0.1, 'cm'), #cambia el ancho de la leyenda legend.title = element_text(size=8), #cambia el texto del titulo de la leyenda legend.text = element_text(size=8), #cambia el texto de los elementos de la leyenda legend.position = "bottom", legend.background = element_rect(linetype = 1, size = 0.5, colour = 1), axis.text.x = element_text(size = 8), axis.text.y = element_text(size = 8)) + labs(x="Semana",y="Promedios semanales de Casos de dengue", caption = "Fuente: Elaboración propia", title = "Promedios semanales de Casos de dengue y precipitación en el departamento de Lambayeque, periodo 2010-2020", fill="", color="Leyenda") ggsave(casos_pp_tambopata,filename = "graficos/4.1 Barras de casos vs linea de pp.jpg", width = 9.0,height = 4.5) # 5) Graficos en mapas ---- #carga de datos shapefile shp_depa <- st_read('data_cruda/SHP/DEPARTAMENTOS.shp') # Para mapa por departamento data_mapa <- salud_clima_dep %>% clean_names() %>% group_by(departamento) %>% summarise(casos = sum(casos, na.rm = T)) %>% ungroup() shp_depa <- shp_depa %>% clean_names() %>% rename(departamento = departamen) data_shp_dep <- merge(shp_depa, data_mapa, by = c('departamento')) #calculo de cuartiles para el fill del gráfico quantile(data_mapa$casos) mapa_casos_dep<-data_shp_dep %>% ggplot(aes(fill = casos, label = departamento)) + geom_sf() + geom_sf_label(fill = 'white', alpha = 0.8, size = 2) + scale_fill_viridis_c(breaks=c(0,103,4861,14399),trans="log")+ theme_test()+ labs(fill = 'Nº de casos', caption = 'Fuente: Elaboración propia', x= 'Longitud', y= 'Latitud', title = 'Mapa de casos de dengue por departamento, Perú 2010-2020') + north(data = data_shp_dep, symbol = 3,location = 'topleft') ggsave(mapa_casos_dep,filename = "graficos/5.1 Casos por departamento.jpg", width = 9,height = 9)