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)
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()

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")


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()

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 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 (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"))
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"))

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"))

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")

También te puede interesar