Estás leyendo la publicación: Animación del progreso y las variantes de Covid-19 a lo largo del tiempo: hacia la IA
Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.
Visualización de datos
Usando R y GGanimate
Me encanta la función GGanimate de GGPlot que te permite agregar una cuarta dimensión a cualquier trama que estés haciendo. Por lo tanto, esta no es la primera correo Lo atribuyo a la construcción de GIF usando R. Pero, cuando algo es divertido, tiendes a repetirlo. Así que hagamos esto corto y dulce.
rm(lista = ls())
biblioteca (tidyverse)
biblioteca (readr)
biblioteca (ggthemes)
biblioteca (lubricar)
biblioteca (zoológico)
biblioteca (gganimate)
biblioteca (parcela)
Descargué los datos de Covid de OWID y algunos datos del Instituto Nacional Holandés de Salud Pública y Medio Ambiente. He publicado sobre esta pieza técnica en particular antes en LinkedIN.
obtener ()
carpeta_datos <- archivo.ruta("C:/Covid/")
URL <- "https://covid.ourworldindata.org/data/owid-covid-data.csv“
nombre <- "owid-covid-data.csv"
download.file(url = url, destfile = paste0(data_folder,name))
setwd(carpeta_datos)
Covidowid_covid_data <- read_csv(paste0(data_folder,name)) data_folder <- file.path("C:/Covid/")
URL <- "https://data.rivm.nl/covid-19/COVID-19_varianten.csv“
nombre <- "COVID-19_varianten.csv"
download.file(url = url, destfile = paste0(data_folder,name))
setwd(carpeta_datos)
variantes <- read_delim(paste0(data_folder,name),
delim = “;”, escape_double = FALSO, trim_ws = VERDADERO)
Luego, transformé los datos para imitar el artículo de la New York Times indicando que Omikron puede tener algunas amenazas subyacentes. Entonces, lo que hice fue conectar las infecciones, las admisiones y las muertes mediante el uso de promedios móviles, valores logarítmicos y retrasos.
df<-Covidowid_covid_data
países <- c(único(df_owid$iso_code))
dfNLD <- df%>%
dplyr::filter(iso_code == “NLD”)%>%
dplyr::select(date,iso_code,date,new_cases_per_million, new_deaths_per_million)%>%
dplyr::mutate(cases_07da = zoo::rollmean(new_cases_per_million, k = 7, fill = NA),
death_07da = zoo::rollmean(new_deaths_per_million, k = 7, fill = NA),
fecha de muerte_21plus = fecha – 21)
cabeza (dfNLD)
ggplot(dfNLD)+
geom_line(aes(x=fecha, y=registro(casos_07da), color=”Nuevos Casos”))+
geom_line(aes(x=deathdate_21plus, y=log(deaths_07da), color=”Nuevas Muertes”))+
escala_color_manual(nombre=””,
valores=c(‘rojo’, ‘gris’),
etiquetas = c(“Casos”, “Muertes 21 días después”))+
tema_bw()+
tema(leyenda.posición=”abajo”)+
laboratorios(x=”Fecha”,
y=”Nuevos casos y nuevas muertes (escala logarítmica)”,
title=”Nuevos casos frente a nuevas muertes en una escala logarítmica de promedio móvil de 7 días”) dfNLD <- df%>%
dplyr::filter(iso_code == “NLD”)%>%
dplyr::select(date,iso_code,date,new_cases_per_million, icu_patients_per_million)%>%
dplyr::mutate(cases_07da = zoo::rollmean(new_cases_per_million, k = 7, fill = NA),
ICU_07da = zoo::rollmean(icu_patients_per_million, k = 7, fill = NA),
ICUdate_14plus = fecha – 14)
ggplot(dfNLD)+
geom_line(aes(x=fecha, y=registro(casos_07da), color=”Nuevos Casos”))+
geom_line(aes(x=ICUdate_14plus , y=log(ICU_07da), color=”Nueva UCI”))+
escala_color_manual(nombre=””,
valores=c(‘rojo’, ‘gris’),
etiquetas = c(“Casos”, “UCI 14 días después”))+
tema_bw()+
tema(leyenda.posición=”abajo”)+
laboratorios(x=”Fecha”,
y=”Casos Nuevos y UCI (escala logarítmica)”,
title=”Casos nuevos frente a UCI en una escala logarítmica de promedio móvil de 7 días”) dfNLD <- df%>%
dplyr::filter(iso_code == “NLD”)%>%
dplyr::select(date,iso_code,date,new_cases_per_million, hosp_patients_per_million)%>%
dplyr::mutate(cases_07da = zoo::rollmean(new_cases_per_million, k = 7, fill = NA),
hosp_07da = zoo::rollmean(hosp_patients_per_million, k = 7, fill = NA),
HOSPdate_14plus = fecha – 14)
ggplot(dfNLD)+
geom_line(aes(x=fecha, y=registro(casos_07da), color=”Nuevos Casos”))+
geom_line(aes(x=HOSPdate_14plus , y=log(hosp_07da), color=”Nuevo Hospital”))+
escala_color_manual(nombre=””,
valores=c(‘rojo’, ‘gris’),
etiquetas = c(“Casos”, “Hospital 14 días después”))+
tema_bw()+
tema(leyenda.posición=”abajo”)+
laboratorios(x=”Fecha”,
y=”Casos nuevos y hospital (escala logarítmica)”,
title=”Casos nuevos frente a hospital en una escala logarítmica de promedio móvil de 7 días”) dfNLD <- df%>%
dplyr::filter(iso_code == “NLD”)%>%
dplyr::select(date,iso_code,date,new_cases_per_million, hosp_patients_per_million,icu_patients_per_million,new_deaths_per_million)%>%
dplyr::mutate(cases_07da = zoo::rollmean(new_cases_per_million, k = 7, fill = NA),
hosp_07da = zoo::rollmean(hosp_patients_per_million, k = 7, fill = NA),
HOSPdate_14plus = fecha – 14,
death_07da = zoo::rollmean(new_deaths_per_million, k = 7, fill = NA),
deathdate_21plus = fecha – 21,
ICU_07da = zoo::rollmean(icu_patients_per_million, k = 7, fill = NA),
ICUdate_14plus = fecha – 14)
ggplot(dfNLD)+
geom_line(aes(x=fecha, y=registro(casos_07da), color=”Nuevos Casos”))+
geom_line(aes(x=HOSPdate_14plus , y=log(hosp_07da), color=”Nuevo Hosp”))+
geom_line(aes(x=ICUdate_14plus , y=log(ICU_07da), color=”Nueva UCI”))+
geom_line(aes(x=deathdate_21plus, y=log(deaths_07da), color=”Nuevas Muertes”))+
escala_color_manual(nombre=””,
valores=c(‘gris’, ‘rojo’, ‘verde’, ‘azul’),
etiquetas = c(“Casos”, “Hospital 14 días después”, “UCI 14 días después”,”Muertes 21 días después”))+
tema_bw()+
tema(leyenda.posición=”abajo”)+
laboratorios(x=”Fecha”,
y=”Casos Nuevos, Hospital, UCI y Muertes (escala logarítmica)”,
title=”Casos nuevos frente a hospital, UCI y muertes en una escala logarítmica de promedio móvil de 7 días”) knitr::opts_chunk$set(fig.width=unit(25,”cm”), fig.height=unit(11 ,”cm”))
dfNLD<-df%>%
dplyr::filter(iso_code == “NLD”)%>%
dplyr::select(date,iso_code,date,new_cases_per_million, hosp_patients_per_million,icu_patients_per_million,new_deaths_per_million)%>%
dplyr::mutate(cases_07da = zoo::rollmean(new_cases_per_million, k = 7, fill = NA),
hosp_07da = zoo::rollmean(hosp_patients_per_million, k = 7, fill = NA),
HOSPdate_14plus = fecha – 14,
death_07da = zoo::rollmean(new_deaths_per_million, k = 7, fill = NA),
deathdate_21plus = fecha – 21,
ICU_07da = zoo::rollmean(icu_patients_per_million, k = 7, fill = NA),
ICUdate_14plus = fecha – 14)
mi.animación<-ggplot(dfNLD)+
geom_line(aes(x=fecha, y=registro(casos_07da), color=”Nuevos Casos”))+
geom_line(aes(x=HOSPdate_14plus , y=log(hosp_07da), color=”Nuevo Hosp”))+
geom_line(aes(x=ICUdate_14plus , y=log(ICU_07da), color=”Nueva UCI”))+
geom_line(aes(x=deathdate_21plus, y=log(deaths_07da), color=”Nuevas Muertes”))+
escala_color_manual(nombre=””,
valores=c(‘gris’, ‘rojo’, ‘verde’, ‘azul’),
etiquetas = c(“Casos”, “Hospital 14 días después”, “UCI 14 días después”,”Muertes 21 días después”))+
tema_bw()+
tema(leyenda.posición=”abajo”)+
laboratorios(x=”Fecha”,
y=”Casos Nuevos, Hospital, UCI y Muertes (escala logarítmica)”,
title=”Casos nuevos frente a hospital, UCI y muertes en una escala logarítmica de promedio móvil de 7 días”)+
transición_revelar(fecha)
animar(mi.animación, ancho=2000, alto=1000,
resolución=150,
fin_pausa = 60,
nframes=300);anim_save(“Covid.gif”)
Como puede ver, solo se necesita una línea simple en el código GGplot para animar la figura anterior. Pero le da una dimensión completamente diferente.
Ahora, lo que quiero agregar a la figura es la evolución de las variantes. Afortunadamente, también tenemos esos datos, así que carguémoslos, grafiquémoslos y conéctelos. Tampoco animé esos datos, aunque podría haberlo hecho. Te dejo ese ejercicio a ti.
variantes_sum<-variantes%>%
group_by(Date_of_statistics_week_start,Variant_name)%>%
resume(ss=sum(Muestra_tamaño),
vc=sum(Variant_cases),
perc=(vc/ss)*100)
variantes_sum$fecha<-variants_sum$fecha_de_estadísticas_semana_inicio
combinado<-merge(dfNLD,variants_sum, by=c("fecha")) g1<-ggplot(combinado)+
geom_line(aes(x=fecha, y=registro(casos_07da), color=”Nuevos Casos”))+
geom_line(aes(x=HOSPdate_14plus , y=log(hosp_07da), color=”Nuevo Hosp”))+
geom_line(aes(x=ICUdate_14plus , y=log(ICU_07da), color=”Nueva UCI”))+
geom_line(aes(x=deathdate_21plus, y=log(deaths_07da), color=”Nuevas Muertes”))+
escala_color_manual(nombre=””,
valores=c(‘gris’, ‘rojo’, ‘verde’, ‘azul’),
etiquetas = c(“Casos”, “Hospital 14 días después”, “UCI 14 días después”,”Muertes 21 días después”))+
tema_bw()+
tema(leyenda.posición=”abajo”)+
laboratorios(x=”Fecha”,
y=”Casos Nuevos, Hospital, UCI y Muertes (escala logarítmica)”,
title=”Casos nuevos frente a hospital, UCI y muertes en una escala logarítmica de promedio móvil de 7 días”)+
scale_x_date(límites = as.Date(c(“2021-01-03”, “2022-02-18”)))
g2<-ggplot(combinado,
aes(x=fecha,
fill=nombre_variante))+
geom_area(aes(y=perc), alfa=0.5)+
tema_bw()+
laboratorios(x=”Fecha”,
y=”Número de variantes/Tamaño de la muestra”,
fill=”Nombre de variante”,
title=”Progresión variante en el tiempo en el NL “)+
tema(leyenda.posición = “abajo”)+
scale_x_date(límites = as.Date(c(“2021-01-03”, “2022-02-18”)))
rejilla.arrange(g1,g2, ncol=1)
plot_grid(g1, g2,
alinear = “v”,
fila = 2,
alturas_rel = c(2/3, 1/3))
Así que ahí lo tenemos. Ahora, la distribución de la columna podría haber sido mejor, tal vez, pero eso también se lo dejo a usted. ¡Disfrutar!
La animación del progreso y las variantes de Covid-19 a lo largo del tiempo se publicó originalmente en Hacia la IA en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.
Publicado a través de Hacia la IA