Datos

Considera los datos de la siguiente tabla, que muestran el conteo de valores de la variable x en tres grupos diferentes.

# Datos 
set.seed(1)
x <- sample(1:4, size = 50, replace = TRUE)
g <- sample(c("Grupo 1", "Grupo 2", "Grupo 3"),
            size = 50, replace = TRUE)

# Crea una tabla con tus datos
tabla <- table(x, g)
tabla
x Grupo 1 Grupo 2 Grupo 3
1 3 8 5
2 5 7 4
3 4 3 4
4 4 1 2

Gráfico de barras apiladas

Para crear un gráfico de barras apiladas, también conocido como diagrama o gráfico de columnas apiladas, puedes utilizar la función barplot del paquete de gráficos base. Ten en cuenta que puedes agregar un título, un subtítulo o cambiar las etiquetas de los ejes, o eliminarlas estableciendo axes = FALSE, entre otras personalizaciones.

barplot(tabla,
        main = "Gráfico de barras apiladas",
        sub = "Subtítulo",
        xlab = "Etiqueta eje X",
        ylab = "Etiqueta eje Y",
        axes = TRUE)

Gráfico de barras apiladas en R

Gráfico horizontal

Si prefieres un diagrama de barras apiladas horizontal en lugar de vertical establece horiz = TRUE.

barplot(tabla,
        horiz = TRUE)

Gráfico de columnas horizontal en R

Etiquetas de los grupos

La función también permite modificar los nombres de los grupos mostrados en el eje X (o el eje Y si el gráfico es horizontal) con el argumento names.arg.

barplot(tabla,
        names.arg = c("G1", "G2", "G3"))

Gráfico de columnas apiladas con nombres personalizados

Color de fondo y de los bordes

Colores del gráfico de barras apiladas con la función barplot

Paleta de colores

Si quieres personalizar la paleta de colores usa el argumento col. Tendrás que especificar tantos colores como filas tenga tu tabla. Visita la sección de paletas de colores para elegir tu paleta.

barplot(tabla, col = c("#993404", "#FB6A4A",
                      "#FED976", "#FFFFCC"))

Color del borde de un gráfico de barras apiladas en R

Color del borde

El color del borde, que por defecto es negro, se puede personalizar con el argumento border.

# Gráfico de barras apiladas con borde marrón
barplot(tabla, col = c("#993404", "#FB6A4A",
                      "#FED976", "#FFFFCC"),
        border = "brown")

Gráfico de columnas apiladas sin bordes en R

Eliminar los bordes

Si prefieres eliminar los bordes establece border = NA.

# Gráfico de barras apiladas sin bordes
barplot(tabla, col = c("#993404", "#FB6A4A",
                      "#FED976", "#FFFFCC"),
        border = NA)

Agregar una leyenda

Agregar una leyenda

La función barplot proporciona un argumento llamado legend.text, que permite añadir una leyenda al gráfico de columnas sin usar la función legend.

# Stacked bar plot with legend
barplot(tabla, col = c("#993404", "#FB6A4A",
                      "#FED976", "#FFFFCC"),
        legend.text = rownames(tabla))

Agregando una leyenda al gráfico de barras apiladas en R

Personalización de la leyenda

Si quieres personalizar la leyenda puedes pasar los argumentos de la función legend al argumento args.legend como una lista.

# Gráfico de barras apildas con leyenda
barplot(tabla, col = c("#993404", "#FB6A4A",
                      "#FED976", "#FFFFCC"),
        legend.text = rownames(tabla),
        args.legend = list(x = "topleft"))

Personalizar la leyenda en la función barplot

Leyenda fuera del gráfico

Puede que hayas notado que la leyenda se muestra sobre el gráfico de barras en el ejemplo. Si quieres poner la leyenda fuera del gráfico incrementa los márgenes correspondientes y ajusta la posición de la leyenda con inset tal y como se muestra en el ejemplo siguiente.

# Incrementamos el margen derecho
par(mar = c(5.1, 4.1, 4.1, 4))

# Gráfico de barras apiladas con leyenda
barplot(tabla,
        col = c("#993404", "#FB6A4A",
                "#FED976", "#FFFFCC"),
        legend.text = rownames(tabla), 
        args.legend = list(x = "topright",
                           inset = c(-0.2, 0))) 

Gráfico de barras en R con la leyenda fuera del gráfico

También te puede interesar