La librería waffle
contiene una función del mismo nombre que puede ser usada para crear gráficos de waffle (square pie o gridplots) en ggplot2.
Para crear un gráfico de waffle básico pasa el vector que contiene la cuenta para cada grupo a la función. El número de filas del gráfico puede ser seleccionado con rows
(por defecto es 10). Elige un valor en base a tus datos.
# install.packages("waffle", repos = "https://cinc.rud.is")
library(waffle)
# Vector
x <- c(30, 25, 20, 5)
# Gráfico de waffle
waffle(x, rows = 8)
Usa un vector con nombres para cambiar la leyenda
Si nombras las variables del vector, la leyenda mostrará sus nombres.
# install.packages("waffle", repos = "https://cinc.rud.is")
library(waffle)
# Vector
x <- c(G1 = 30, G2 = 25, G3 = 20, G4 = 5)
# Gráfico de waffle
waffle(x, rows = 8)
Personalización del color
Puedes pasar un vector de colores al argumento colors
. Pasa tantos colores como número de componentes tenga el vector de entrada.
# install.packages("waffle", repos = "https://cinc.rud.is")
library(waffle)
# Vector
x <- c(G1 = 30, G2 = 25, G3 = 20, G4 = 5)
# Gráfico de waffle
waffle(x, rows = 8,
colors = c("#FFEDA0", "#FEB24C", "#FC4E2A", "#BD0026"))
Posición de la leyenda
La posición de la leyenda se puede cambiar con el argumento legend_pos
. Los posibles valores son "right"
(por defecto), "bottom"
, "left"
, "top"
y "none"
para eliminar la leyenda.
# install.packages("waffle", repos = "https://cinc.rud.is")
library(waffle)
# Vector
x <- c(G1 = 30, G2 = 25, G3 = 20, G4 = 5)
# Gráfico de waffle
waffle(x, rows = 8,
legend_pos = "bottom")
En caso de que quieras incrementar el margen del gráfico respecto a la leyenda pasa un valor numérico al argumento pad
(por defecto es 0).
El paquete también proporciona una función llamada iron
, que puede ser usada para combinar varios gráficos de waffle, como en el siguiente ejemplo.
# install.packages("waffle", repos = "https://cinc.rud.is")
library(waffle)
w1 <- waffle(c(A = 0, B = 40), rows = 5)
w2 <- waffle(c(A = 10, B = 30), rows = 5)
# Combinar los gráficos
iron(w1, w2)
Ten en cuenta que puedes deshacerte de las categorías no usadas en los gráficos pasando keep = FALSE
.
# install.packages("waffle", repos = "https://cinc.rud.is")
library(waffle)
w1 <- waffle(c(A = 0, B = 40), rows = 5, keep = FALSE)
w2 <- waffle(c(A = 10, B = 30), rows = 5, keep = FALSE)
# Combinar los gráficos, eliminando las etiquetas que no se usan
iron(w1, w2)
geom_waffle
Si prefieres utilizar un geom en lugar de un wrapper el paquete proporciona geom_waffle
, que puede ser utilizada tal y como se muestra en el siguiente ejemplo. Ten en cuenta que scale_fill_manual
se puede usar para sobrescribir los colores o para personalizar la leyenda.
# install.packages("waffle", repos = "https://cinc.rud.is")
library(waffle)
# Datos
df <- data.frame(grupo = LETTERS[1:3],
valor = c(25, 20, 35))
# Gráfico waffle
ggplot(df, aes(fill = grupo, values = valor)) +
geom_waffle(n_rows = 8, size = 0.33, colour = "white") +
scale_fill_manual(name = NULL,
values = c("#BA182A", "#FF8288", "#FFDBDD"),
labels = c("A", "B", "C")) +
coord_equal() +
theme_void()
También te puede interesar