Cómo hacer un gráfico de Waffle interactivo con R

Existen diferentes alternativas a la hora de representar frecuencias de una variable. En posts previos, hemos explorado las alternativas al gráfico de barras, aunque existen muchas otras que podemos tener en cuenta. Un ejemplo de ello son los gráficos de Waffle. Aunque su traducción literal sea gráfico de gofre, en español mantenemos la versión anglosajona. Otra denominación que pueden recibir es square pie.
Datos
Para el ejemplo utilizaremos las estadísticas de lanzamientos de SpaceX 🚀 que se pueden consultar en su web. SpaceX cuenta con 4 plataformas de lanzamiento de cohetes para permitir un mayor número de órbitas y una quinta privada, Boca Chica, desde la que se lanzará exclusivamente Starship. Los datos los especificaremos manualmente a través de la función tribble.
library(tidyverse)
df_spacex <- tribble(
~launchpad, ~n,
'Cape Canaveral SLC 40', 74,
'KSC Historic LC 39A', 36,
'Vandenberg AFB SLC 4E', 16,
'Kwajalein Atoll', 5
)
Gráfico de Waffle
Para realizar el gráfico de Waffle podríamos optar directamente por utilizar la librería ggplot2. Sin embargo, como en este caso queremos que el gráfico sea interactivo, cargaremos la librería Highcharter, una librería original de Javascript Highcharts que fue desarrollada para R por Joshua Kunst. Esta opción aporta dinamismo a los gráficos y un mayor valor a las visualizaciones ya que permite que el usuario interactúe y explore la información de forma autónoma. Tengamos en cuenta, que la librería está protegida bajo licencia en caso de uso comercial.
Para la paleta de colores hemos optado por el conjunto plasma, de Viridis, que cargaremos a través de la función de R viridis_pal()
.
Finalmente, el gráfico se completa eligiendo las variables a representar y el símbolo que se desea utilizar. Por defecto, este símbolo será un cuadrado, pero también acepta imágenes que se indican mediante urls.
library(viridis)
library(highcharter)
hchart(df_spacex, "item", hcaes(name=launchpad, y=n),
name = "n", marker = list(symbol = 'square'), showInLegend = TRUE) %>%
hc_colors(viridis::viridis_pal(option = 'plasma')(4)) %>%
hc_title(text = "Lanzamientos de cohetes de SpaceX")