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)
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))))
Ten en cuenta que internamente la función almacena los factores como enteros (1 = "black"
, 2 = "red"
, 3 = "green"
, …).
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.
# 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)
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))])
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