Datos de muestra

Los siguientes datos representan las respuestas a la pregunta: “¿Cuántas horas al día ves la televisión?”. La variable x representa la edad de la persona, y representa su respuesta y grupo representa su ciudad. Estos datos ficticios serán usados en los ejemplos siguientes.

# Datos
set.seed(1)

edad <- factor(sample(c("Niño", "Adulto", "Jubilado"),
              size = 50, replace = TRUE),
              levels = c("Niño", "Adulto", "Jubilado"))
horas <- sample(1:4, size = 50, replace = TRUE)
ciudad <- sample(c("A", "B", "C"),
               size = 50, replace = TRUE)

df <- data.frame(x = edad, y = horas, grupo = ciudad)

Gráfico de barras apiladas con geom_bar

stat = “count” (por defecto)

Si usas geom_bar con los argumentos por defecto tendrás que pasar solo x o y a la función aes además de fill. El gráfico de barras mostrará la suma apilada para cada grupo de la variable.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, fill = grupo)) + 
  geom_bar()

Gráfico de barras apiladas en ggplot2 con geom_bar

stat = “identity”

Si estableces stat = "identity" puedes crear un gráfico de barras apiladas para múltiples variables. En este escenario puedes pasar otra variable a aes, representando el valor o el conteo de la variable.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, y = y, fill = grupo)) + 
  geom_bar(stat = "identity")

Gráfico de barras apiladas para múltiples variables en ggplot2

Color de fondo y del borde de las barras

Paleta de colores gráfico de barras apiladas en ggplot2

Paleta predefinida

Puedes cambiar los colores de las barras apiladas con una paleta predefinida, como las que proporciona scale_fill_brewer.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, y = y, fill = grupo)) + 
  geom_bar(stat = "identity") +
  scale_fill_brewer()

ggplot2 gráfico de barras apiladas con colores personalizados

Colores personalizados

Si prefieres elegir cada color puedes usar scale_fill_manual y pasar un vector de colores al argumento values.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, y = y, fill = grupo)) + 
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("#DADAEB", "#9E9AC8", "#6A51A3"))

Color de las barras en ggplot2

Color del borde (stat = “identity”)

En caso de que estés creando un gráfico de barras con stat = "identity" puedes establecer un color de borde pasando un color al argumento color de geom_bar, pero el borde resaltará todas las barras representando los valores de la variable y.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, y = y, fill = grupo)) + 
  geom_bar(stat = "identity", color = "black") +
  scale_fill_manual(values = c("#DADAEB", "#9E9AC8", "#6A51A3"))

Color del borde las barras apiladas en ggplot2

Color del borde (stat = “count”)

Si creas un gráfico de barras apiladas en base a una variable el borde se mostrará alrededor de cada barra, ya que no hay otra variable

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, fill = grupo)) + 
  geom_bar(color = "black") +
  scale_fill_manual(values = c("#DADAEB", "#9E9AC8", "#6A51A3"))

Personalización de la leyenda

Título de la leyenda

El título de la leyenda del gráfico de barras se corresponde por defecto al nombre de la variable pasada a fill, pero se puede sobrescribir con el código siguiente.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, y = y, fill = grupo)) + 
  geom_bar(stat = "identity") +
  guides(fill = guide_legend(title = "Título"))

Cambiar el título de la leyenda de un gráfico de barras en ggplot2

Etiquetas de la leyenda

Las etiquetas de la leyenda son los nombres de la variable categórica pasada a fill. Si necesitas cambiar estos valores puedes usar el argumento labels de sacale_fill_discrete o scale_fill_manual si cambias los colores de fondo.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, y = y, fill = grupo)) + 
  geom_bar(stat = "identity") +
  scale_fill_discrete(labels = c("G1", "G2", "G3"))

Cambiar las etiquetas de la leyenda en ggplot2

Eliminar la leyenda

La leyenda se puede borrar estableciendo el componente legend.position de la función theme como "none". Ten en cuenta que también puedes cambiar la posición de la leyenda con esta componente.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = x, y = y, fill = grupo)) + 
  geom_bar(stat = "identity") +
  theme(legend.position = "none")

Eliminar la leyenda de un gráfico de barras apiladas en ggplot2

También te puede interesar