Cómo hacer un gráfico de columnas en highcharter

En posts anteriores, vimos cómo cambiar el tema de un gráfico en highcharter o cómo modificar el título. En el post de hoy aprenderemos a hacer un gráfico de columnas en highcharter. No es una tarea complicada, así que te animo a seguir leyendo hasta el final!

Notarás que el tema de los gráficos es diferente al de por defecto. Esto se debe a que hemos modificado las opciones globales con el tema creado en el post anterior:

library(highcharter)

options(highcharter.theme = elartedeldato_theme)

Cómo realizar un gráfico de columnas en highcharter

En primer lugar generamos los datos de tipo categórico. Generaremos un dataset muy pequeño como ejemplo.

df_cat <- dplyr::tribble(
  ~x, ~y,
  "A", 10,
  "B", 23,
  "C", 7,
  "D", 16
)

df_cat
## # A tibble: 4 × 2
##   x         y
##   <chr> <dbl>
## 1 A        10
## 2 B        23
## 3 C         7
## 4 D        16

A continuación, construimos el gráfico con la función hchart() e indicando el tipo de gráfico de columnas con type = "column".

library(highcharter)

hchart(
  df_cat,
  name = "Columnas", # Nombre de la serie
  type = "column", # Tipo de gráfico
  hcaes(x = x, y = y) # Mapeado de variables
) |>
hc_title(text = "<b>Gráfico de columnas</b>") |> # Título
hc_subtitle(text = "<i>Orden por defecto</i>")  |> # Subtítulo
hc_credits(enabled = TRUE, text = "http://elartedeldato.com")  -> hc # Créditos

hc

Además, como ya vimos en el post inicial sobre cómo hacer un gráfico con highcharter podemos añadir el título y el subtítulo con las funciones hc_title() y hc_subtitle().

Cómo ordenar un gráfico de columnas en highcharter

Una tarea que se suele recomendar hacer en los gráficos de columnas es ordenar el eje x de forma descendente según la variable numérica. Para ello existen dos soluciones.

1) Solución trivial para ordenar un gráfico de columnas

La solución trivial es ordenar la variable en el dataset previamente. Aunque parezca obvio, esta solución en ggplot2, por ejemplo, no tendría el resultado esperado (en variables character, sí en variables factor). En este caso, con highcharter, basta con ordenar la variable categórica según la variable numérica.

df_cat |>
  dplyr::arrange(desc(y)) |>
  hchart(
    name = "Columnas",
    type = "column",
    hcaes(x = x, y = y) 
  ) |>
  hc_title(text = "<b>Gráfico de columnas</b>") |>
  hc_subtitle(text = "<i>Ordenado por variable y</i>") |>
  hc_credits(enabled = TRUE, text = "http://elartedeldato.com")  -> hc_ordenado

hc_ordenado

También comentar que al trabajar con datos categóricos, highcharter permite indicar las categorías directamente en las funciones hc_xAxis() y hc_yAxis() con el argumento categories. Un caso en el que puede compensar utilizarlo para hacer el equivalente de geom_count de ggplot2 en highcharter, es decir, un gráfico de puntos para representar frecuencias de dos variables.

2) Solución avanzada para ordenar un gráfico de columnas

Como alternativa, highcharter cuenta con un argumento llamado categories que permite indicar los niveles de la variable categórica directamente como argumento en la función hc_xAxis().

df_cat |>
  hchart(
    name = "Columnas",
    type = "column",
    hcaes(x = x, y = y),
    dataSorting = list(enabled = TRUE), # Ordenar el eje x por variable y (por defecto)
  ) |>
  hc_title(text = "<b>Gráfico de columnas</b>") |>
  hc_subtitle(text = "<i>Ordenado por variable y</i>") |>
  hc_credits(enabled = TRUE, text = "http://elartedeldato.com")  -> hc_ordenado2

hc_ordenado2

Por defecto, highcharter no ordena por ninguna variable excepto si se indica explícitamente. Ésto se puede hacer a través del argumento sortkey. Para información más detallada puedes consultar la API de highcharts.

Paula L. Casado
Paula L. Casado
Data Scientist

Científica de datos especializada en visualización de datos.

Relacionado