Diagrama de Sankey

El diagrama de Sankey es uno de los gráficos de flujo más conocidos. Este gráfico, permite visualizar la transición entre dos variables categóricas. En el post de hoy vamos a ver cómo hacer un diagrama de Sankey interactivo con highcharter.

El tema de los gráficos lo puedes encontrar en la entrada sobre cómo crear temas en highcharter y configurarlo al inicio de la sesión así:

library(highcharter)

options(highcharter.theme = elartedeldato_theme)

Cómo hacer un diagrama de Sankey en highcharter

Una de las partes más complejas de Highcharter, es preparar el conjunto de datos de entrada para representar el gráfico. En concreto, para el diagrama de Sankey se encesita un dataframe con las variables from, to, weight, id, indicando cada uno de los flujos entre categorías y su peso.

Por suerte, la librería de R nos proporciona directamente algunas funciones que “nos facilitan la vida” en este sentido. Una de estas funciones es data_to_sankey() que transforma un dataframe formado por variables categóricas en el input adecuado para el diagrama de Sankey.

library(ggplot2)

diamonds2 <- dplyr::select(diamonds, cut, color, clarity)

sankey_input  <- data_to_sankey(diamonds2)

A continuación, indicamos como siempre el tipo de gráfico en la función hchart() con type = "sankey". En este caso, la estética no es necesario definirla ya que el nombre de las variables del input se corresponden con las de por defecto y son detectadas automáticamente por Highcharter.

hchart(
  sankey_input,
  type = "sankey",
  name = "diamonds"
)  |>
  hc_title(text = "<b>Diagrama de Sankey</b>") |>
  hc_subtitle(text = "<i>Ejemplo de Diagrama de Sankey en Highcharter - dataset diamonds de ggplot2</i>") |>
  hc_credits(enabled = TRUE, text = "http://elartedeldato.com")