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)
x
y
z
grupo
9209.9198247306
6310.85579306819
1548.84887835942
A
7505.27748535387
9815.69460174069
4524.93808651343
B
8615.53835705854
7600.93317879364
8225.47984193079
A
5279.19966122136
5717.52804378048
9687.26067128591
B
2029.3504986912
2512.35973299481
5717.13005215861
A
9512.42636679672
8855.04934168421
3157.78435906395
B

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")
Created with Highcharts 9.3.1xyGráfico de dispersiónEjemplo de scatter plot en Highcharter con datos generadosAB2k3k4k5k6k7k8k9k02k4k6k8k10k12khttp://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")
Created with Highcharts 9.3.1xyGráfico de dispersiónEjemplo de scatter plot en Highcharter con datos generadosAB2k3k4k5k6k7k8k9k02k4k6k8k10k12khttp://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")
Created with Highcharts 9.3.1xyGráfico de dispersiónEjemplo de scatter plot en Highcharter con datos generadosAB2k3k4k5k6k7k8k9k02k4k6k8k10k12khttp://elartedeldato.com