El dashboard del Coronavirus: el caso de España
Este cuadro de Coronavirus: el caso de España ofrece una visión general de la epidemia de coronavirus novedoso COVID-19 (2019-nCoV) para España. Este cuadro está construido con R usando el marco R Makrdown.
Código
El código detrás de este panel está disponible en la esquina derecha del dashboard como “Source code”.
Datos
Los datos de entrada para este cuadro son el conjunto de datos disponible del paquete {coronavirus} R. Asegúrese de descargar la versión de desarrollo del paquete para tener los últimos datos:
install.packages (“devtools”) devtools :: install_github (“RamiKrispin / coronavirus”) Los datos y el cuadro se actualizan diariamente.
Los datos sin procesar se extraen del depósito de coronavirus del Centro de la Universidad de Johns Hopkins para Ciencia e Ingeniería de Sistemas (JHU CCSE).
Información y contacto
Puedes replicar mas o menos el cuadro de mando copiando el código y adaptándolo a tu país.
Para cualquier pregunta o comentario, puede contactarme.
Actualizar
Los datos son del sábado 25 de abril de 2020 y el tablero se actualizó el domingo 26 de abril de 2020.
---
title: "Coronavirus en España"
author: "Víctor López"
output:
flexdashboard::flex_dashboard:
orientation: rows
# social: ["facebook", "twitter", "linkedin"]
source_code: embed
vertical_layout: fill
editor_options:
chunk_output_type: console
---
```{r setup, include=FALSE}
#------------------ Packages ------------------
#install.packages (c ("devtools", "flexdashboard", "leaflet", "leafpop"))
#devtools :: install_github ("RamiKrispin / coronavirus")
library(flexdashboard)
# install.packages("devtools")
#devtools::install_github("RamiKrispin/coronavirus", force = TRUE)
library(coronavirus)
data(coronavirus)
update_datasets()
# View(coronavirus)
# max(coronavirus$date)
`%>%` <- magrittr::`%>%`
#------------------ Parameters ------------------
# Set colors
# https://www.w3.org/TR/css-color-3/#svg-color
confirmed_color <- "purple"
active_color <- "#1f77b4"
recovered_color <- "forestgreen"
death_color <- "red"
#------------------ Data ------------------
df <- coronavirus %>%
# dplyr::filter(date == max(date)) %>%
dplyr::filter(Country.Region == "Spain") %>%
dplyr::group_by(Country.Region, type) %>%
dplyr::summarise(total = sum(cases)) %>%
tidyr::pivot_wider(
names_from = type,
values_from = total
) %>%
# dplyr::mutate(unrecovered = confirmed - ifelse(is.na(recovered), 0, recovered) - ifelse(is.na(death), 0, death)) %>%
dplyr::mutate(unrecovered = confirmed - ifelse(is.na(death), 0, death)) %>%
dplyr::arrange(-confirmed) %>%
dplyr::ungroup() %>%
dplyr::mutate(country = dplyr::if_else(Country.Region == "United Arab Emirates", "UAE", Country.Region)) %>%
dplyr::mutate(country = dplyr::if_else(country == "Mainland China", "China", country)) %>%
dplyr::mutate(country = dplyr::if_else(country == "North Macedonia", "N.Macedonia", country)) %>%
dplyr::mutate(country = trimws(country)) %>%
dplyr::mutate(country = factor(country, levels = country))
df_daily <- coronavirus %>%
dplyr::filter(Country.Region == "Spain") %>%
dplyr::group_by(date, type) %>%
dplyr::summarise(total = sum(cases, na.rm = TRUE)) %>%
tidyr::pivot_wider(
names_from = type,
values_from = total
) %>%
dplyr::arrange(date) %>%
dplyr::ungroup() %>%
#dplyr::mutate(active = confirmed - death - recovered) %>%
dplyr::mutate(active = confirmed - death) %>%
dplyr::mutate(
confirmed_cum = cumsum(confirmed),
death_cum = cumsum(death),
# recovered_cum = cumsum(recovered),
active_cum = cumsum(active)
)
df1 <- coronavirus %>% dplyr::filter(date == max(date))
```
Resumen
=======================================================================
Row {data-width=400}
-----------------------------------------------------------------------
### confirmed {.value-box}
```{r}
valueBox(
value = paste(format(sum(df$confirmed), big.mark = ","), "", sep = " "),
caption = "Total casos confirmados",
icon = "fas fa-user-md",
color = confirmed_color
)
```
### death {.value-box}
```{r}
valueBox(
value = paste(format(sum(df$death, na.rm = TRUE), big.mark = ","), " (",
round(100 * sum(df$death, na.rm = TRUE) / sum(df$confirmed), 1),
"%)",
sep = ""
),
caption = "Muertes (Ratio de muertes)",
icon = "fas fa-heart-broken",
color = death_color
)
```
Row
-----------------------------------------------------------------------
### **Casos acumulados diarios por tipo** (Solo España)
```{r}
plotly::plot_ly(data = df_daily) %>%
plotly::add_trace(
x = ~date,
# y = ~active_cum,
y = ~confirmed_cum,
type = "scatter",
mode = "lines+markers",
# name = "Active",
name = "Confirmados",
line = list(color = active_color),
marker = list(color = active_color)
) %>%
plotly::add_trace(
x = ~date,
y = ~death_cum,
type = "scatter",
mode = "lines+markers",
name = "Muertes",
line = list(color = death_color),
marker = list(color = death_color)
) %>%
plotly::add_annotations(
x = as.Date("2020-02-26"),
y = 1,
text = paste("Primer caso"),
xref = "x",
yref = "y",
arrowhead = 5,
arrowhead = 3,
arrowsize = 1,
showarrow = TRUE,
ax = -10,
ay = -90
) %>%
plotly::add_annotations(
x = as.Date("2020-02-13"),
y = 3,
text = paste("1a Muerte"),
xref = "x",
yref = "y",
arrowhead = 5,
arrowhead = 3,
arrowsize = 1,
showarrow = TRUE,
ax = -90,
ay = -90
) %>%
plotly::add_annotations(
x = as.Date("2020-03-14"),
y = 14,
text = paste(
"Confinamiento"
),
xref = "x",
yref = "y",
arrowhead = 5,
arrowhead = 3,
arrowsize = 1,
showarrow = TRUE,
ax = -10,
ay = -90
) %>%
plotly::layout(
title = "",
yaxis = list(title = "Número de casos acumulados"),
xaxis = list(title = "Fecha"),
legend = list(x = 0.1, y = 0.9),
hovermode = "compare"
)
```
Comparación
=======================================================================
Column {data-width=400}
-------------------------------------
### **Nuevos casos confirmados diarios**
```{r}
daily_confirmed <- coronavirus %>%
dplyr::filter(type == "confirmed") %>%
dplyr::filter(date >= "2020-02-24") %>%
dplyr::mutate(country = Country.Region) %>%
dplyr::group_by(date, country) %>%
dplyr::summarise(total = sum(cases)) %>%
dplyr::ungroup() %>%
tidyr::pivot_wider(names_from = country, values_from = total)
#----------------------------------------
# Plotting the data
daily_confirmed %>%
plotly::plot_ly() %>%
plotly::add_trace(
x = ~date,
y = ~Netherlands,
type = "scatter",
mode = "lines+markers",
name = "Netherlands"
) %>%
plotly::add_trace(
x = ~date,
y = ~Germany,
type = "scatter",
mode = "lines+markers",
name = "Germany"
) %>%
plotly::add_trace(
x = ~date,
y = ~Spain,
type = "scatter",
mode = "lines+markers",
name = "Spain"
) %>%
plotly::add_trace(
x = ~date,
y = ~Italy,
type = "scatter",
mode = "lines+markers",
name = "Italy"
) %>%
plotly::layout(
title = "",
legend = list(x = 0.1, y = 0.9),
yaxis = list(title = "Nuevos casos confirmados"),
xaxis = list(title = "Fecha"),
# paper_bgcolor = "black",
# plot_bgcolor = "black",
# font = list(color = 'white'),
hovermode = "compare",
margin = list(
# l = 60,
# r = 40,
b = 10,
t = 10,
pad = 2
)
)
```
### **Distribución de casos por tipo**
```{r daily_summary}
df_EU <- coronavirus %>%
# dplyr::filter(date == max(date)) %>%
dplyr::filter(Country.Region == "Spain" |
Country.Region == "Netherlands" |
Country.Region == "Italy" |
Country.Region == "France" |
Country.Region == "Germany") %>%
dplyr::group_by(Country.Region, type) %>%
dplyr::summarise(total = sum(cases)) %>%
tidyr::pivot_wider(
names_from = type,
values_from = total
) %>%
# dplyr::mutate(unrecovered = confirmed - ifelse(is.na(recovered), 0, recovered) - ifelse(is.na(death), 0, death)) %>%
dplyr::mutate(unrecovered = confirmed - ifelse(is.na(death), 0, death)) %>%
dplyr::arrange(confirmed) %>%
dplyr::ungroup() %>%
dplyr::mutate(country = dplyr::if_else(Country.Region == "United Arab Emirates", "UAE", Country.Region)) %>%
dplyr::mutate(country = dplyr::if_else(country == "Mainland China", "China", country)) %>%
dplyr::mutate(country = dplyr::if_else(country == "North Macedonia", "N.Macedonia", country)) %>%
dplyr::mutate(country = trimws(country)) %>%
dplyr::mutate(country = factor(country, levels = country))
plotly::plot_ly(
data = df_EU,
x = ~country,
# y = ~unrecovered,
y = ~ confirmed,
# text = ~ confirmed,
# textposition = 'auto',
type = "bar",
name = "Confirmados",
marker = list(color = active_color)
) %>%
plotly::add_trace(
y = ~death,
# text = ~ death,
# textposition = 'auto',
name = "Muertes",
marker = list(color = death_color)
) %>%
plotly::layout(
barmode = "stack",
yaxis = list(title = "Casos Totales"),
xaxis = list(title = "Países"),
hovermode = "compare",
margin = list(
# l = 60,
# r = 40,
b = 10,
t = 10,
pad = 2
)
)
```
Información
=======================================================================
**El dashboard del Coronavirus: el caso de España**
Este cuadro de Coronavirus: el caso de España ofrece una visión general de la epidemia de coronavirus novedoso COVID-19 (2019-nCoV) para España. Este cuadro está construido con R usando el marco R Makrdown.
**Código**
El código detrás de este panel está disponible en la esquina derecha del dashboard como "Source code".
**Datos**
Los datos de entrada para este cuadro son el conjunto de datos disponible del paquete {coronavirus} R. Asegúrese de descargar la versión de desarrollo del paquete para tener los últimos datos:
install.packages ("devtools")
devtools :: install_github ("RamiKrispin / coronavirus")
Los datos y el cuadro se actualizan diariamente.
Los datos sin procesar se extraen del depósito de coronavirus del Centro de la Universidad de Johns Hopkins para Ciencia e Ingeniería de Sistemas (JHU CCSE).
**Información y contacto**
Puedes replicar mas o menos el cuadro de mando copiando el código y adaptándolo a tu país.
Para cualquier pregunta o comentario, puede contactarme.
**Actualizar**
Los datos son del sábado 25 de abril de 2020 y el tablero se actualizó el domingo 26 de abril de 2020.