El siguiente data frame contiene una columna con dos distribuciones con diferente media y la misma varianza y una variable categórica que representa qué observaciones corresponden a cada distribución.
set.seed(3)
x1 <- rnorm(500)
x2 <- rnorm(500, mean = 3)
x <- c(x1, x2)
grupo <- c(rep("G1", 500), rep("G2", 500))
df <- data.frame(x, group = grupo)
geom_histogram
Fill
Para crear un histograma por grupo en ggplot2 tendrás que pasar la variable numérica y la categórica a aes
y usar geom_histogram
de la siguiente manera.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo)) +
geom_histogram()
Colour
También puedes pasar la variable categórica al argumento colour
, de modo que los bordes de cada histograma sean de un color diferente.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, colour = grupo)) +
geom_histogram()
Por defecto, si los histogramas se solapan, los valores se apilarán. Otra opción es cambiar la posición a identity
(y usar colores con trasparencia) o a dodge
como en los ejemplos siguientes.
Posición identity
Establecer position = "identity"
es lo más recomendable en la mayoría de los casos, pero recuerda usar un color transparente con alpha
para que ambos histogramas sean completamente visibles.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo , colour = grupo)) +
geom_histogram(alpha = 0.5, position = "identity")
Posición dodge
Otra opción es usar position = "dodge"
, que agrega un espacio entre cada barra de forma que puedas ver ambos histogramas.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo , colour = grupo)) +
geom_histogram(position = "dodge")
Color del borde
Si estableces fill
dentro de aes
pero no colour
puedes cambiar el color del borde para todos los histogramas así como el ancho y tipo de línea con los argumentos de geom_histogram
.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo)) +
geom_histogram(colour = "black",
lwd = 0.75,
linetype = 1,
position = "identity")
Color de fondo
Si estableces colour
pero no fill
puedes cambiar el color de fondo de todos los histogramas con el argumento fill
de geom_histogram
.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, colour = grupo)) +
geom_histogram(fill = "white",
position = "identity")
Personalizar el color del borde para cada grupo
El color de los bordes se puede personalizar para cada histograma con scale_color_manual
. Si quieres usar una paleta predefinina puedes usar, por ejemplo, scale_color_brewer
.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, colour = grupo)) +
geom_histogram(fill = "white",
position = "identity") +
scale_color_manual(values = c("blue", "orange"))
Personalizar el color de fondo para cada grupo
De manera similar a personalizar los colores de los bordes, los colores de fondo se pueden cambiar con scale_fill_manual
o una función equivalente.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo)) +
geom_histogram(color = 1, alpha = 0.75,
position = "identity") +
scale_fill_manual(values = c("#8795E8", "#FF6AD5"))
Título de la leyenda
El título de la leyenda es el nombre de la columna de la variable categórica del conjunto de datos. Puedes cambiarlo con los argumentos fill
y/o colour
de la función guides
. Como estamos pasando fill
y colour
a aes
establecemos ambas para que no se creen dos leyendas.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo , colour = grupo)) +
geom_histogram(alpha = 0.5, position = "identity") +
guides(fill = guide_legend(title = "Title"),
colour = guide_legend(title = "Title"))
Etiquetas de la leyenda
La leyenda mostrará por defecto los nombres de la variable categórica, pero puedes cambiarlos con scale_color_discrete
y/o scale_fill_discrete
. Ten en cuenta que esto dependerá del aes
que establezcas.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo , colour = grupo)) +
geom_histogram(alpha = 0.5, position = "identity") +
scale_color_discrete(labels = c("A", "B")) +
scale_fill_discrete(labels = c("A", "B"))
Posición de la leyenda
La posición por defecto de la leyenda es la derecha, pero puedes cambiarla con el componente legend.position
de la función theme
como en el ejemplo siguiente.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo , colour = grupo)) +
geom_histogram(alpha = 0.5, position = "identity") +
theme(legend.position = "left") # Izquierda
Eliminar la leyenda
Estableciendo position = "none"
se eliminará la leyenda por completo.
# install.packages("ggplot2")
library(ggplot2)
# Histograma por grupo en ggplot2
ggplot(df, aes(x = x, fill = grupo , colour = grupo)) +
geom_histogram(alpha = 0.5, position = "identity") +
theme(legend.position = "none")
También te puede interesar