Librería

waffle

Autor principal

Bob Rudis

Gráfico de waffle básico

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)

Gráfico de waffle en ggplot2

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)

Square pie en R

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

Colores del gráfico de waffle en ggplot2

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

Gridplot en R

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

Combinando gráficos

Creando gráficos de waffle en ggplot2

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)

Combinando diferentes gráficos de waffle en R

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)

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

Función geom_waffle del paquete waffle

También te puede interesar