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 |
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 horizontal
Si prefieres un diagrama de barras apiladas horizontal en lugar de vertical establece horiz = TRUE
.
barplot(tabla,
horiz = TRUE)
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"))
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
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")
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
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))
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"))
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)))
También te puede interesar