library(readr)
library(dplyr)
library(tidyr)
library(ggplot2)
library(ggrepel)
library(stringr)
require(RCurl)
library(lubridate)
url_file_prov<-"https://raw.githubusercontent.com/montera34/escovid19data/master/data/output/covid19-provincias-spain_consolidated.csv"
url_file_poblacion <- "https://raw.githubusercontent.com/montera34/escovid19data/master/data/original/provincias-poblacion.csv"
provincias <- read.csv( url_file_prov,encoding = "UTF-8")
provincias_abreviatura <- read_csv( "abreviaturas_provincias.csv")
provincias <- provincias %>%
filter (date >= "2021-01-01")
provincias$date <- as.Date(provincias$date,format= "%Y-%m-%d")
provincias <- provincias %>%
select (date,province,ccaa,hospitalized,intensive_care,daily_deaths,poblacion) %>%
merge(provincias_abreviatura,
by.x = "province", by.y = "provincia" ) %>%
mutate(hospitalized_tot = ifelse(ccaa == "AndalucĆa" |
ccaa == "Madrid, Comunidad de" |
ccaa == "Cantabria" |
ccaa == "Murcia" |
ccaa == "Cantabria",hospitalized ,
hospitalized+intensive_care)) %>%
mutate (hospitalized_nor =hospitalized_tot *100000/ poblacion ) %>%
mutate (intensive_care_nor = intensive_care *100000/ poblacion) %>%
mutate (daily_deaths_nor =daily_deaths *100000/ poblacion ) %>%
mutate (year = as.integer(format(date, format="%Y")) -2021) %>%
mutate (week = (as.integer(format(date, format="%U")) +1)+(52*year)) %>%
arrange (week)
GrƔfica sin nombres de provincia para destacar la tendencia.
res <- dumbbell_A (provincias,"intensive_care_nor", "UCI",5,2,0.1)
plot(res)
heat_map_resumen <- function (provincias,indicator,text_indicator){
weeks <- unique(provincias$week)
first_week <- min(weeks,na.rm = TRUE)
last_week <- max(weeks,na.rm = TRUE)
name_file <- paste0("images/tercera_ola_",indicator,"_resumen.png")
chart_title <- paste("Evolución de", text_indicator)
df <- mutate (provincias,indicator=provincias[[indicator]]) %>%
filter (!is.na (indicator) ) %>%
filter (week > 30) %>%
select (week,province,indicator) %>%
group_by(week,province) %>%
summarise ( indicator_week = mean (indicator), .groups = 'drop') %>%
mutate(indicator_last_week = ifelse(week == last_week, indicator_week, 0))
p <-
ggplot(data = df,
aes(x = week, y = reorder(province,(indicator_last_week)), fill=indicator_week)) +
geom_tile()+
geom_text(aes(label = round(indicator_week,1)), color="white", size=2.5,hjust=0.5, vjust=0.5 ) +
scale_fill_gradient(low = "steelblue", high = "red4")+
labs(y = "Provincia",
caption = "By @congosto\nFuente: @escovid19data. https://github.com/montera34/escovid19data",
title = chart_title,
subtitle="Tercera Ola (desde el 2 de diciembre). Normalizado a 100.000 habitantes")+
scale_x_continuous(name="Semanas", breaks= weeks ,position = "top",
sec.axis = dup_axis()) +
theme_a()+
theme(legend.title=element_blank(),
axis.ticks.y=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.text.x=element_text(size=10),
axis.text.y=element_text(size=10),
legend.position="right")
#ggsave(name_file)
return (p)
}
GrÔficas inspiradas en las realizadas por @BIOCOMSC1 sobre el riesgo del COVID19. Dan mucha información con pocos elementos (poca tinta), permitiendo ver la evolución, el estado actual y las zonas de riesgo. Risk Diagrams
Cuando los datos tienen una componente temporal normalmente usamos un line chart. En estas grÔficas se representa la relación de dos variables a través del tiempo de una manera distinta. Es un diagrama de puntos unidos según su evolución en el tiempo.
No sĆ© el nombre que reciben estos grĆ”ficos pero William Phillips los utilizó 1958 para representar la evolución del desempleo y la inflación a travĆ©s del tiempo, que ha pasado a la historia como āla curva Phillipsā.
la curva de Phillips
Las grÔficas han sido mejoradas con la idea de Maarten Lambrechts de agrupar los datos semanalmente y señalar en el path el número de la semana.
La fuente de datos es el repositorio #escovid19data
Las grÔficas muestran la relación entre UCI y hospitalizados calculados como media semanal.
La semana de inicio es la 32 (3 Ago~9 Ago)
El código de color usado es:
connected_scatterplot_hos_UCI <- function (provincias,autonomia) {
autonomia_text <- str_replace_all(autonomia, " ", "_")
name_file <- paste0("images/tercera_ola_",autonomia_text,"_UCI_vs_hospitalizados.png")
chart_title <- paste("Evolución de los Hospitalizados vs. UCI (media semanal) en",autonomia)
df <- filter (provincias,ccaa == autonomia) %>%
filter (!is.na(hospitalized_nor)) %>%
filter (!is.na(intensive_care_nor)) %>%
mutate(tipo_fecha = ifelse(week == min(week), "primera",
ifelse(week == max(week), "ultima","otras"))) %>%
mutate(year = year (date)) %>%
group_by(week,province) %>%
summarise ( hospitalized_nor_week = mean(hospitalized_nor),
daily_death_nor_week = mean(daily_deaths_nor),
intensive_care_nor_week = mean(intensive_care_nor),
tipo_fecha = tipo_fecha,
year = year,
.groups = 'drop') %>%
distinct(week,province,year,hospitalized_nor_week,intensive_care_nor_week,tipo_fecha ) %>%
arrange (week,province)
ini_year <-df %>%
filter (week == 1 |
week == 54)
p <-
ggplot()+
geom_path (data = df,
aes(x=hospitalized_nor_week, y=intensive_care_nor_week),
color="cornflowerblue",size=0.5,alpha=0.5)+
geom_label(data = df,
aes(x=hospitalized_nor_week, y=intensive_care_nor_week, color=tipo_fecha,
label = ifelse(week > 53 ,week %% 53,week)),
label.padding = unit(0.15, "lines"),
size=3,hjust=1.1, vjust=0.5) +
geom_text_repel (data= ini_year,
aes (x=hospitalized_nor_week, y=intensive_care_nor_week, label =year),
nudge_x = 0.5, # Ajuste eje x
nudge_y = 0.7 #juste eje y
) +
labs(x = "Hospitalizados (media semanal)", y = "UCI (media semanal)",
caption = "By @congosto\nFuente: @escovid19data. https://github.com/montera34/escovid19data",
title = chart_title,
subtitle="Desde el 1 de enero de 2021. Normalizado a 100.000 habitantes") +
scale_colour_manual('', values = c('primera' = 'forestgreen',
'ultima' = 'red',
'otras' = 'steelblue4')) +
guides(color = "none") +
theme_a()+
facet_wrap(~ province)
#ggsave(name_file )
return(p)
}
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"AndalucĆa")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Aragón")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Asturias, Principado de")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Balears, Illes")
plot(res)
res <- connected_scatterplot_hos_UCI (provincias,"Canarias")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Cantabria")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Castilla y León")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Castilla - La Mancha")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"CataluƱa")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Comunitat Valenciana")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Extremadura")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Galicia")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Madrid, Comunidad de")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Murcia, Región de")
plot(res)
Segunda Ola (desde el 3 de agosto)
#res <- connected_scatterplot_hos_UCI (provincias,"PaĆs Vasco")
#plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Rioja, La")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Ceuta")
plot(res)
Segunda Ola (desde el 3 de agosto)
res <- connected_scatterplot_hos_UCI (provincias,"Melilla")
plot(res)