#En este documento se exponen las herramientas utilizadas para la generación de los gráficos y la aplicación en RShiny del elercicio titulado: ANÁLISIS DE LA PROGRESIÓN DE LA INFECCIÓN COVID19 EN SEIS PAISES EUROPEOS.

##Lo primero es obtener la base de datos con la que vamos a trabajar. La original es mundial, y por tanto, escogemos los seis paises a analizar.

#Hemos obtenido la informacion de https://ourworldindata.org/
library(readr)
owid_covid_data <- read_csv("C:/Users/Jose Carlos/Documents/Documentos de Jose Carlos/Master Big Data/Visualizacion avanzada/owid-covid-data.csv")
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   iso_code = col_character(),
##   location = col_character(),
##   date = col_date(format = ""),
##   tests_units = col_character()
## )
## See spec(...) for full column specifications.
Datos<-as.data.frame(owid_covid_data)
#Realizamos una partición por los paises que nos interesa analizar más en profundo:
ESP<-Datos[Datos$iso_code == "ESP",]
FRA<-Datos[Datos$iso_code == "FRA",]
ITA<-Datos[Datos$iso_code == "ITA",]
GRC<-Datos[Datos$iso_code == "GRC",]
IRL<-Datos[Datos$iso_code == "IRL",]
GBR<-Datos[Datos$iso_code == "GBR",]

#Cargamos las librerias data.table y dplyr para generar una base de datos que contenga a los seis paises elegidos
library(data.table)
## Warning: package 'data.table' was built under R version 3.6.3
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:data.table':
## 
##     between, first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
ESPW<-as.data.table(ESP)
FRAW<-as.data.table(FRA)
ITAW<-as.data.table(ITA)
GRCW<-as.data.table(GRC)
IRLW<-as.data.table(IRL)
GBRW<-as.data.table(GBR)
MIWORLD<-bind_rows(ESPW,FRAW,ITAW,GRCW,IRLW,GBRW)
miworld <- MIWORLD[!is.na(MIWORLD$iso_code),]

##Asimismo obtenemos otra pequeña tabla para visualizar los datos de prevalencia de algunas de las variables que figuran al final de la tabla.

mi_miniworld<-slice(miworld, 2,134,267,400,532,663)

##Una vez preparadas las tables comenzamos a crear los gráficos que nos pueden interesar para la infografía

#Prevalencia de diabetes
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.6.3
g<-ggplot(mi_miniworld,aes(iso_code, diabetes_prevalence))
g+ geom_col(aes(fill=iso_code), width=0.5)+
  ggtitle("Prevalencia de diabetes por paises") +
  labs (x= "PAISES",y="PREVALENCIA", caption = NULL)

#Mortalidad cardiovascular

g<-ggplot(mi_miniworld,aes(iso_code,cvd_death_rate))
g+ geom_col(aes(fill=iso_code), width=0.5)+
  ggtitle("Tasa de mortalidad cardiovascular por paises") +
  labs (x= "PAISES",y="TASA DE MORTALIDAD CARDIOVASCULAR", caption = NULL)

#Proporción de población mayor de 70 años

g<-ggplot(mi_miniworld,aes(iso_code,aged_70_older))
g+ geom_col(aes(fill=iso_code), width=0.5)+
  ggtitle("Proporción de personas mayores de 70 años (Datos del año 2015)") +
  labs (x= "PAISES",y="PROPORCIÓN DE MAYORES DE 70 AÑOS", caption = NULL)

##A continuación realizamos algunos de los scatterplots de variables continuas que me interesan para su publicacion

#Casos totales por tests realizados

p<-ggplot(miworld,aes (total_tests, total_cases))
p + geom_point(aes(shape = iso_code, color = iso_code, size = 0.1)) +
    coord_cartesian() +
    scale_color_discrete() +
  ggtitle("Casos totales por test realizados") +
  labs (x= "Test totales realizados", y = "Casos totales diagnosticados")
## Warning: Removed 527 rows containing missing values (geom_point).

#Mortalidad total por casos totales

p<-ggplot(miworld,aes (total_cases, total_deaths_per_million))
p + geom_point(aes(shape = iso_code, color = iso_code, size = 0.01)) +
  coord_cartesian() +
  scale_color_discrete() +
  ggtitle("Mortalidad total (casos por millón), por casos diagnosticados") +
  labs (x= "Casos totales", y = "Mortalidad total (por millon)")
## Warning: Removed 1 rows containing missing values (geom_point).

#Mortalidad de novo, por casos de novo

p<-ggplot(miworld,aes (new_cases_per_million, new_deaths_per_million))
p + geom_point(aes(shape = iso_code, color = iso_code, size = 0.01)) +
  coord_cartesian() +
  scale_color_discrete() +
  ggtitle("Mortalidad de novo (casos por millón), por casos nuevos") +
  labs (x= "Casos nuevos", y = "Mortalidad de novo (por millon)")
## Warning: Removed 1 rows containing missing values (geom_point).

##Y en esta parte continuamos realizando los “timeline” de las variables principales a analizar

#Casos totales por pais

min<-as.Date("2020-3-1")
max<-NA 

t<-ggplot(miworld, aes(date, total_cases))
t + geom_line(aes(color = iso_code), size = 2) +
  scale_color_manual(values = c("#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c")) +
  theme_minimal() +
  scale_x_date(date_labels = "%b/%Y", limits = c(min,max)) +
  ggtitle("Linea temporal de casos totales por país") + 
  labs (x = "Fecha", y = "Casos totales")
## Warning: Removed 366 row(s) containing missing values (geom_path).

#Mortalidad total

t<-ggplot(miworld, aes(date, total_deaths))
t + geom_line(aes(color = iso_code), size = 2) +
  scale_color_manual(values = c("#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c")) +
  theme_minimal() +
  scale_x_date(date_labels = "%b/%Y", limits = c(min,max)) +
  ggtitle("Linea temporal de mortalidad por país") + 
  labs (x = "Fecha", y = "Mortalidad")
## Warning: Removed 366 row(s) containing missing values (geom_path).

#Mortalidad ajustada por población

t<-ggplot(miworld, aes(date, total_deaths_per_million))
t + geom_line(aes(color = iso_code), size = 2) +
  scale_color_manual(values = c("#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c")) +
  theme_minimal() +
  scale_x_date(date_labels = "%b/%Y", limits = c(min,max)) +
  ggtitle("Linea temporal de mortalidad ajustada por país") + 
  labs (x = "Fecha", y = "Mortalidad ajustada")
## Warning: Removed 366 row(s) containing missing values (geom_path).

#Nuevos casos ajustados por millon de habitantes

t<-ggplot(miworld, aes(date, new_cases_per_million))
t + geom_line(aes(color = iso_code), size = 2) +
  scale_color_manual(values = c("#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c")) +
  theme_minimal() +
  scale_x_date(date_labels = "%b/%Y", limits = c(min,max)) +
  ggtitle("Linea temporal de nuevos casos por millón de habitantes y por país") + 
  labs (x = "Fecha", y = "Nuevos casos")
## Warning: Removed 366 row(s) containing missing values (geom_path).

##Por ultimo obtenemos unos mapas con los paises seleccionados para representar mejor la diferencia entre ellos respecto a alguna variable interesante (choropleth) ###En este caso hemos utilizados las librerias de R rgeos y sf

#cargamos las siguientes librerias

library(rgeos)
## Warning: package 'rgeos' was built under R version 3.6.3
## Loading required package: sp
## Warning: package 'sp' was built under R version 3.6.3
## rgeos version: 0.5-3, (SVN revision 634)
##  GEOS runtime version: 3.8.0-CAPI-1.13.1 
##  Linking to sp version: 1.4-1 
##  Polygon checking: TRUE
library(sf)
## Warning: package 'sf' was built under R version 3.6.3
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(rnaturalearth)
## Warning: package 'rnaturalearth' was built under R version 3.6.3
library(rnaturalearthdata)
## Warning: package 'rnaturalearthdata' was built under R version 3.6.3
#También la función theme_set

theme_set(theme_bw())

#Con estas librerias disponemos de las coordenadas de los paises a nivel mundial. 
#Ahora generamos un data.frame con los paises que hemos seleccionado:

mi_space<-ne_countries(scale = "medium", country= c("spain","france","italy","greece","ireland", "united kingdom"), returnclass = "sf")

#A este data.frame, le vamos a añadir las columnas que nos interesan del otro data.frame de paises, que he denominado mi_miniworld
#Reordenamos las filas del mi_miniworld

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.6.3
## -- Attaching packages ---------------------------------------------- tidyverse 1.3.0 --
## v tibble  3.0.1     v stringr 1.4.0
## v tidyr   1.0.3     v forcats 0.5.0
## v purrr   0.3.3
## Warning: package 'tibble' was built under R version 3.6.3
## Warning: package 'tidyr' was built under R version 3.6.3
## Warning: package 'forcats' was built under R version 3.6.3
## -- Conflicts ------------------------------------------------- tidyverse_conflicts() --
## x dplyr::between()   masks data.table::between()
## x dplyr::filter()    masks stats::filter()
## x dplyr::first()     masks data.table::first()
## x dplyr::lag()       masks stats::lag()
## x dplyr::last()      masks data.table::last()
## x purrr::transpose() masks data.table::transpose()
mi_miniworld<-mi_miniworld %>% arrange(iso_code)

#Ahora ya añadimos las columnas deseadas a mi_space

diabetes<-mi_miniworld$diabetes_prevalence
cvd<-mi_miniworld$cvd_death_rate
older<-mi_miniworld$aged_70_older
total_deaths_per_million3<-mi_miniworld$total_deaths_per_million2
mi_space1<-as.data.table(mi_space)
mi_space1<-cbind(mi_space1,diabetes)
mi_space1<-cbind(mi_space1,cvd)
mi_space1<-cbind(mi_space1, older)
mi_space1<-cbind(mi_space1, total_deaths_per_million3)

#ahora dibujamos mapa para edad mayor de 70 años

ggplot( data = mi_space1, aes( geometry = geometry) ) +
  geom_sf(aes(fill = older)) +
  coord_sf(xlim = c(-20, 30), ylim = c(20, 62), expand = FALSE) +
  scale_fill_viridis_c(option = "plasma" , trans = "sqrt") +
  ggtitle("Prevalencia por país de población mayor de 70 años")

#Mapa para mortalidad cardiovascular

ggplot( data = mi_space1, aes( geometry = geometry) ) +
  geom_sf(aes(fill = cvd)) +
  coord_sf(xlim = c(-20, 30), ylim = c(20, 62), expand = FALSE) +
  scale_fill_viridis_c(option = "cividis" , trans = "sqrt") +
  ggtitle("Tasa de mortalidad cardiovascular por pais")

#Para la prevalencia de diabetes

ggplot( data = mi_space1, aes( geometry = geometry) ) +
  geom_sf(aes(fill = diabetes)) +
  coord_sf(xlim = c(-20, 30), ylim = c(20, 62), expand = FALSE) +
  scale_fill_gradient(low = "#c7e9c0" , high = "#006d2c" ) +
  ggtitle("Prevalencia de personas con diabetes por pais (datos del año 2015)")