Datos de muestra

Los datos utilizados en este tutorial son las siguientes variables aleatorias. Copia y pega este código en tu consola para ejecutar los ejemplos.

# Datos
set.seed(34)
x <- runif(300)
y <- 5 * x ^ 2 + rnorm(length(x), sd = 2)
grupo <- ifelse(x < 0.4, "Grupo 1",
                 ifelse(x > 0.8, "Grupo 2",
                        "Grupo 3"))
# Ruido aleatorio
x <- x + runif(length(x), -0.2, 0.2)

Diagrama de dispersión por grupo

Si tienes una variable categórica representando grupos puedes crear un diagrama de dispersión (nube de puntos), pasando dicha variable (como factor) al argumento col de la función plot, de modo que cada grupo se mostrará en un color diferente.

# Gráfico de dispersión
plot(x, y,
     pch = 19,
     col = factor(grupo))

# Leyenda
legend("topleft",
       legend = levels(factor(grupo)),
       pch = 19,
       col = factor(levels(factor(grupo))))

Gráfico de dispersión con colores por grupo en R base

Ten en cuenta que internamente la función almacena los factores como enteros (1 = "black", 2 = "red", 3 = "green", …).

Cambiar los colores por defecto

Si quieres cambiar los colores por defecto puedes crear un vector de colores y pasarlos a la función tal y como se muestra en el siguiente bloque de código.

Colores por grupo en un gráfico de dispersión en R

# Selección de colores
colores <- c("#FDAE61", # Naranja
             "#D9EF8B", # Verde claro
             "#66BD63") # Verde oscuro

# Gráfico de dispersión
plot(x, y,
     pch = 19,
     col = colores[factor(grupo)])

# Leyenda
legend("topleft",
       legend = c("Grupo 1", "Grupo 2", "Grupo 3"),
       pch = 19,
       col = colores)

Sin embargo, los colores mostrados en el gráfico no siguen el orden del vector de colores especificados, sino que siguen el orden de los niveles del factor (naranja para el grupo 1, verde claro para el grupo 2 y verde oscuro para el grupo 3)

Reordenar los colores de los grupos

Como el color que se utiliza se basa en los niveles de la variable categórica, es posible reordenar los niveles para cambiar el orden de los colores, tal y como se muestra en el siguiente ejemplo.

# Selección de colores
colores <- c("#FDAE61", # Naranja
             "#D9EF8B", # Verde claro
             "#66BD63") # Verde oscuro

# Reordenar los niveles del factor
grupos_ordenados <- factor(grupo, levels = c("Grupo 2",
                                             "Grupo 1",
                                             "Grupo 3"))
# Diagrama de dispersión
plot(x, y,
     pch = 19,
     col = colores[grupos_ordenados])

# Legend
legend("topleft",
       legend = c("Grupo 1", "Grupo 2", "Grupo 3"),
       pch = 19,
       col = colores[factor(levels(grupos_ordenados))])

Reordenar los colores de un diagrama de dispersión o nube de puntos en R

Ahora el primer color (naranja) es para el grupo 2, el verde claro para el grupo 1 y el verde oscuro para el grupo 3.

También te puede interesar