Treemaps en ggplot2 con treemapify

Librería

treemapify

Autor principal

David Wilkins

Datos de muestra

El siguiente data frame que contiene tres columnas con el grupo y el subgrupo de diferentes valores será usado en este tutorial.

grupo <- paste("Grupo", 1:9)
subgrupo <- c("A", "C", "B", "A", "A",
              "C", "C", "B", "B")
valor <- c(7, 25, 50, 5, 16,
           18, 30, 12, 41)

df <- data.frame(grupo, subgrupo, valor) 

Treemaps con geom_treemap

Colores en base a la variable categórica

El paquete treemapify permite crear treemaps en ggplot2. Tendrás que especificar las variables dentro de aes como sigue y usar geom_treemap.

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

ggplot(df, aes(area = valor, fill = grupo)) +
  geom_treemap()

Treemap básico en R

Colores en base a la variable numérica

Ten en cuenta que también puedes colorear las variables en base a la variable numérica, dependiendo de lo que quieras representar.

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

ggplot(df, aes(area = valor, fill = valor)) +
  geom_treemap()

Treemap con treemapify

Agregando etiquetas

Agregando textos al treemap en R

Pasando una variable al argumento label de aes y usando geom_treemap_text podrás agregar etiquetas a cada porción del treemap.

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

ggplot(df, aes(area = valor, fill = grupo, label = valor)) +
  geom_treemap() +
  geom_treemap_text()

Personalización del texto del

Las etiquetas se pueden personalizar con varios argumentos. Escribe ?geom_treemap_text para ver la lista completa.

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

ggplot(df, aes(area = valor, fill = grupo, label = valor)) +
  geom_treemap() +
  geom_treemap_text(colour = "white",
                    place = "centre",
                    size = 15)

Agregando grupos y valores a las cajas del treemap

También puedes agregar las etiquetas y los grupos a la vez y eliminar la leyenda si quieres.

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

ggplot(df, aes(area = valor, fill = grupo,
               label = paste(grupo, valor, sep = "\n"))) +
  geom_treemap() +
  geom_treemap_text(colour = "white",
                    place = "centre",
                    size = 15) +
  theme(legend.position = "none")

Treemap coloreado con una paleta continua

Si pasaste la variable numérica a fill puedes pasar los grupos a label.

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

ggplot(df, aes(area = valor, fill = valor, label = grupo)) +
  geom_treemap() +
  geom_treemap_text(colour = "white",
                    place = "centre",
                    size = 15)

Ajustar el texto dentro de las secciones del treemap

Ten en cuenta que existe un argumento llamado grow que se puede establecer como TRUE para que los textos encajen en las porciones.

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

ggplot(df, aes(area = valor, fill = valor, label = grupo)) +
  geom_treemap() +
  geom_treemap_text(colour = "white",
                    place = "centre",
                    size = 15,
                    grow = TRUE)

Treemap en treemapify con subgrupos

Agregando subgrupos

Si tu conjunto de datos contiene una columna que representa subgrupos puedes agregarlos al gráfico con subgroup y geom_treemap_subgroup_text. El color del borde de los subgrupos se puede modificar con geom_treemap_subgroup_border.

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

ggplot(df, aes(area = valor, fill = valor,
               label = grupo, subgroup = subgrupo)) +
  geom_treemap() +
  geom_treemap_subgroup_border(colour = "white", size = 5) +
  geom_treemap_subgroup_text(place = "centre", grow = TRUE,
                             alpha = 0.25, colour = "black",
                             fontface = "italic") +
  geom_treemap_text(colour = "white", place = "centre",
                    size = 15, grow = TRUE)

Puedes crear hasta tres subgrupos con subgroup2, geom_treemap_subgroup2_border y geom_treemap_subgroup2_text y subgroup3, geom_treemap_subgroup3_border y geom_treemap_subgroup3_text.

Personalización de los colores

Los colores del treemap se pueden personalizar con escalas de color. La elección dependerá del tipo de dato que pases a fill (continuo o discreto). A continuación puedes ver un par de ejemplos.

Continua

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

ggplot(df, aes(area = valor, fill = valor, label = grupo)) +
  geom_treemap() +
  geom_treemap_text(colour = c(rep("white", 2),
                               1, rep("white", 6)),
                    place = "centre", size = 15) +
  scale_fill_viridis_c()

Cambiar la paleta de colores de un treemap en ggplot2

Discreta

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

ggplot(df, aes(area = valor, fill = grupo, label = valor)) +
  geom_treemap() +
  geom_treemap_text(colour = "white",
                    place = "centre",
                    size = 15) +
  scale_fill_brewer(palette = "Blues")

Cambiar los colores de un treemap creado con el paquete treemapify

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon
Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon

También te puede interesar