La pandemia, en una celebrada espiral de datos del New York Times
The New York Times mostró la evolución de la pandemia de coronavirus con un gráfico que sorprendió a los especialistas en visualización de datos. Lo que muestra de Argentina y un tutorial para diseñadores web: cómo se hace.
Una novedosa forma de ilustrar los datos de la pandemia irrumpió apenas comenzado el año desde la web del The New York Times y acapara todavía todas las miradas de los especialistas en visualizaciones, habida cuenta de que rompió la clásica linealidad. Algunos inclusive aseveran que es -antes de que enero promedie, siquiera- el artículo del NYT más comentado y visto "del año".
Inspirada en el espiral del Sara Chodosh, fue Amelia Wattenberger quien construyó una versión personalizable, capaz de contar la historia de la pandemia de coronavirus covid-19 como un espiral temporal que compara las épocas y ritmos de contagios. Es una forma de transformar información en arte.
Apareció por primera vez en un artículo en la sección de Opinión del New York Times por el científico Jeffrey Shaman el jueves 6 de enero. Obtuvo mucha atención el viernes 7 y, para el sábado 8 de enero, hubo una gran cantidad de reacciones, conversaciones, opiniones y contra-opiniones. Para el domingo 9 de enero, la cantidad de tweets, hilos, blogs y videos que analizan el gráfico probablemente ya había alcanzado el punto de saturación.
De acuerdo con lo analizado por el portal questionsindataviz, impactó en forma polémica dentro de los expertos del rubro. Señaló, entre otras cosas:
"En primer lugar, la reacción inicial fue muy negativa. Como muchos, me encontré por primera vez con el gráfico adjunto a un tweet del usuario de Twitter Zach Freed con el comentario de que "literalmente no había ninguna razón para convertir este gráfico en una espiral". Otras reacciones negativas incluyeron:
- - Los plazos siempre deben ser lineales.
- - Cualquier cosa circular o radial es una mala práctica.
- - Es difícil ver alguna correlación o estacionalidad usando una espiral
- - Aversión por el color y las imágenes: a las personas les recordaba a los gusanos/tenia
- - No me gusta el desplazamiento de la espiral.
- - ¿Por qué se muestran los valores tanto encima como debajo de la línea?
Pero luego surgieron muchos puntos de vista alternativos en el gráfico. Muchas personas han disfrutado de la reacción y la discusión en torno al gráfico, y algunas de las reacciones positivas han incluido lo siguiente:
- - Es impactante y llama la atención.
- - Es una mejora en los gráficos de líneas anuales separados, ya que no hay desconexión entre años.
- - Ha provocado mucha conversación, no solo sobre las prácticas de visualización de datos, sino también sobre las cifras subyacentes en sí mismas.
- - Las líneas de tiempo en espirales son un uso efectivo del espacio en pantalla.
- - El uso de una espiral facilita ver la estacionalidad y la correlación.
- - La espiral es una buena metáfora para el aumento en el número de casos".
Así se visualiza en la espiral la situación de Argentina
El gráfico en sí mismo
Para questionsindataviz "es justo mencionar que en todos los lados del debate ha habido sugerencias para mejorar el gráfico. En primer lugar, se ha descubierto que la espiral es algo irregular, lo que se suma a la sensación de incertidumbre/inquietud acerca de que la espiral está descentrada (gracias a los detalles aquí en el blog de Robert Kosara, proudeyes.com ). Y la siguiente versión de Amelia Wattenberger hace una serie de mejoras cosméticas (haciendo uso de la imagen de lado a lado creada por Amanda Makulec en su propia excelente crítica).
Alejándose del rojo pálido que recordaba a los espectadores más sensibles gusanos o intestinos, las intensidades de azul y verde hacen un gran trabajo al agregar números de casos de codificación de colores, lo que nos permite detectar más fácilmente las diferencias estacionales. Además, la espiral es más compacta, uniforme y centralizada, y las superposiciones de marcas son una excelente manera de resaltar valores grandes periféricos".
¿Cómo se hace?
Para los interesados en informar con imágenes interactivas, Luego crea la "pista" de la espiral. Aquí es donde se especifica el rango de los datos. Si está pensando en coordenadas cartesianas en lugar de polares, es como establecer el rango y en su gráfico.
# Create the track. |
spiral_track(ylim=c(0, ymax*.7), |
background=FALSE, background_gp = gpar(col = NA, fill = NA)) |
Es posible que desee consultar el tutorial de gráficos de áreas apiladas para obtener más información sobre cómo dibujar polígonos.Luego dibuja el polígono, que coloca la mitad del número de casos en la parte inferior y la otra mitad en la parte superior:
# Use a polygon. |
spiral_polygon(x=c(us$dt, rev(us$dt)), |
y=c(us$new_cases_smoothed/2, -rev(us$new_cases_smoothed/2)), |
gp = gpar(col="#d32e2b", fill="#d32e2b50")) |
El resultado:
Un estadístico que trabaja principalmente con la visualización y que obtuvo su doctorado en estadísticas de la UCLA, es autor de dos best sellers, Data Points y Visualize This, y ejecuta FlowingData, ofreció desde su blog un curso gratuito y completo en torno a cómo hacer ese trabajo.
Así se hace una espiral de analytica:
Sin tener en cuenta si era o no la "mejor" manera de visualizar los datos, claramente la pregunta más importante es cómo hacer ese gráfico. Aquí se explica cómo hacerlo en R.
Suponiendo que ya tiene R instalado, todo lo que necesita es el paquete spiralize de Zuguang Gu. Traiga los datos y hará todos los cálculos en espiral por usted.
Instale el paquete con el instalador de paquetes (que se encuentra a través de los menús principales) o ingrese lo siguiente en la consola R:
install.packages("spiralize") |
Luego carga el paquete:
library("spiralize") |
Cargar datos
Al igual que el gráfico original del NYT, visualizará el promedio de 7 días de casos de Covid-19 en los Estados Unidos. He incluido los datos relevantes en la descarga de este tutorial, pero puede descargarlo directamente desde Our World in Data .
Asegúrese de que su directorio de trabajo en R esté configurado en el lugar donde descargó la fuente del tutorial. La ruta del archivo, en este caso "data/owid-covid-data.csv", es relativa a su directorio de trabajo.Cargue los datos:
covid <- read.csv("data/owid-covid-data.csv", stringsAsFactors = FALSE) |
Haga un subconjunto solo para Estados Unidos y cree una columna dt , que es una versión de objeto de fecha y hora de la columna de fecha :
us <- covid[covid$location == "United States" & !is.na(covid$new_cases_smoothed),] |
us$dt <- strptime(us$date, format="%Y-%m-%d") |
Para que coincida con la versión del NYT, también subconjunto a fechas anteriores al 7 de enero de 2022:
us <- us[us$dt < "2022-01-07",] |
Obtenga el número máximo de casos:
ymax <- max(us$new_cases_smoothed) |
Hacer espiral
Inicialice la espiral configurando el rango de tiempo (del 1 de enero de 2020 al 6 de enero de 2022), las unidades de tiempo (días) y lo que significa cada ronda de espiral (años):
# Initialize. |
spiral_initialize_by_time(xlim=c("2020-01-01 00:00:00", "2022-01-06 00:00:00"), |
unit_on_axis = "days", period="years", |
start=90, end=(709/365)*360+(28/365)*360+90, |
flip="horizontal") |
El argumento de inicio indica que la espiral debe comenzar en 90 grados. El argumento final indica en grados dónde termina la espiral. Esto es lo que obtienes:
Luego crea la "pista" de la espiral. Aquí es donde se especifica el rango de los datos. Si está pensando en coordenadas cartesianas en lugar de polares, es como establecer el rango y en su gráfico.
# Create the track. |
spiral_track(ylim=c(0, ymax*.7), |
background=FALSE, background_gp = gpar(col = NA, fill = NA)) |
Es posible que desee consultar el tutorial de gráficos de áreas apiladas para obtener más información sobre cómo dibujar polígonos.Luego dibuja el polígono, que coloca la mitad del número de casos en la parte inferior y la otra mitad en la parte superior:
# Use a polygon. |
spiral_polygon(x=c(us$dt, rev(us$dt)), |
y=c(us$new_cases_smoothed/2, -rev(us$new_cases_smoothed/2)), |
gp = gpar(col="#d32e2b", fill="#d32e2b50")) |
El resultado:
Casi llegamos.
En la fuente, puede ver cómo amplié la línea de base para comenzar el 1 de enero de 2020. Los datos de EE. UU. comienzan el 28 de enero de 2020.Dibuja la línea media:
# Middle baseline. |
spiral_lines(x=us$dt, y=0) |
En este punto, exportaría y llevaría a Adobe Illustrator para editar , lo cual estoy bastante seguro de que es lo que hicieron Wezerek y Chodosh. Pero el paquete spiralize también proporciona una spiral_text()función si lo desea:
# Text. |
spiral_text(x="2020-01-01", y=50000, text="2020", |
facing = "curved_inside", just = "right", |
gp=gpar(cex=1, fontfamily="Courier")) |
spiral_text(x="2021-01-01", y=50000, text="2021", |
facing = "curved_inside", just = "right", |
gp=gpar(cex=1, fontfamily="Courier")) |
spiral_text(x="2022-01-01", y=50000, text="2022", |
facing = "curved_inside", just = "right", |
gp=gpar(cex=1, fontfamily="Courier")) |
Sin embargo, parecía quisquilloso en mis pruebas:
Así que haz lo que quieras con esa información.
Terminando
Dividí esto en partes para que puedas entender los pasos, pero en general son solo unas pocas líneas de código las que hacen lo siguiente después de cargar los datos:
- Configure el área de trazado.
- Agregue las codificaciones visuales.
Obtenga todos los detalles en la página de GitHub.
También hay más opciones más allá de la línea y el polígono. Puede dibujar barras, puntos, líneas verticales, puntos y segmentos.
Si puede dibujar un diagrama regular en R, entonces puede usar el paquete spiralize para hacer el mismo diagrama en forma de espiral. A todos les encantará , te lo aseguro.
Si está interesado en trabajar con espirales en R desde cero (para un control máximo), hay otro tutorial para eso .
Este tutorial fue realizado por los miembros de FlowingData, que propone sumarse para apoyar un sitio independiente y aprender a hacer excelentes gráficos. Para unirse, clic aquí.