Gráfico de dispersión

En esta sección veremos cómo hacer un gráfico de dispersión o scatter plot en highcharter.

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

library(highcharter)

options(highcharter.theme = elartedeldato_theme)

Un gráfico de dispersión permite representar la relación entre dos variables numéricas.

Para el ejemplo, generaremos datos de una distribución uniforme entre 1000 y 10000, para poder trabajar las unidades y decimales en highcharter, en cada tipo de gráfico que representemos.

df_num <- data.frame(
  x = runif(20, 1000, 10000),
  y = runif(20, 1000, 10000),
  z = runif(20, 1000, 10000),
  grupo = c("A", "B")
)

reactable::reactable(head(df_num), pagination = F)

Hemos generado además de las variables principales, x e y la variable grupo, para dividir los datos en dos categorías, y la variable z, que nos servirá en próximos plots.

hchart(
    df_num,
    type = "scatter",
    hcaes(x = x, y = y, group = grupo)
  ) |>
  hc_title(text = "<b>Gráfico de dispersión</b>") |>
  hc_subtitle(text = "<i>Ejemplo de scatter plot en Highcharter con datos generados</i>") |>
  hc_credits(enabled = TRUE, text = "http://elartedeldato.com")

Cómo modificar el estilo de los puntos en un gráfico de dispersión en highcharter

Los puntos por defecto pueden parecer muy pequeños. Para modificarlos, existen diferentes opciones que puedes encontrar en la API de javascript de Highcharts bajo el argumento de marker. Las opciones principales son:

  • enabled: Habilitar o deshabilitar el marcador.
  • fillColor: Color de relleno del punto.
  • lineColor: Color del borde exterior del punto.
  • lineWidth: Grosor de la línea exterior. Por defecto es 0.
  • radius. Radio del punto. Por defecto es 4.
  • symbol Tipo de símbolo del punto. Opciones: ‘circle’, ‘square’,‘diamond’, ‘triangle’, ‘triangle-down’.

Como ejemplo, aumentamos el tamaño del punto indicando radius = 6.

hchart(
    df_num,
    type = "scatter",
    hcaes(x = x, y = y, group = grupo),
    marker = list(radius = 6)
  ) |>
  hc_title(text = "<b>Gráfico de dispersión</b>") |>
  hc_subtitle(text = "<i>Ejemplo de scatter plot en Highcharter con datos generados</i>") |>
  hc_credits(enabled = TRUE, text = "http://elartedeldato.com")

Cómo modificar el tooltip en un gráfico de dispersión en highcharter

Otro detalle importante en este tipo de gráficos es el tooltip. Para poder definir el número de decimales, utilizamos la opción {point.x:,.2f} y {point.y:,.2f} como pointFormat dentro de la función hc_tooltip().

hchart(
    df_num,
    type = "scatter",
    hcaes(x = x, y = y, group = grupo),
    marker = list(radius = 5)
  ) |>
  hc_tooltip(
    headerFormat = "<b>{series.name}</b><br>",
    pointFormat = "<b>x: </b>{point.x:,.2f} <br> <b>y: </b> {point.y:,.2f}"
  ) |>
  hc_title(text = "<b>Gráfico de dispersión</b>") |>
  hc_subtitle(text = "<i>Ejemplo de scatter plot en Highcharter con datos generados</i>") |>
  hc_credits(enabled = TRUE, text = "http://elartedeldato.com")