Las funciones geom_text y geom_label permiten añadir textos o etiquetas, respectivamente, a gráficos creados con ggplot2. Puedes añadir anotaciones a ciertas coordenadas de puntos o etiquetar las observaciones.

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

# install.packages("maps")
library(maps)

df <- data.frame(x = state.center$x, y = state.center$y,
                 state = state.name)

p <- ggplot(df, aes(x = x, y = y)) + 
       geom_polygon(data = map_data("state"),
                    color = "white",
                    aes(x = long, y = lat,
                        fill = map_data("state")$region,
                        group = group)) +
       guides(fill = FALSE)
p

En esta guía vamos a usar el siguiente gráfico de ejemplo.

Mapa en ggplot2

Agregando textos con geom_text

Uso de la función geom_text para agregar textos en ggplot2

Añadir anotaciones de texto

p + 
  geom_text(aes(x = -115, y = 25,
                label = "Mapa de los Estados Unidos"),
            stat = "unique")

Establece stat = "unique", ya que en otro caso las etiquetas se dibujarán para cada punto de tu data frame una encima de otra.

Personalizar el color y tamaño del texto de geom_text

Personalizar las anotaciones

Existen varios argumentos que puedes personalizar, como el color o el tamaño del texto.

p + 
  geom_text(aes(x = -115, y = 25,
                label = "Mapa de los Estados Unidos"),
            stat = "unique",
            size = 4, color = "red")

Etiquetar observaciones en ggplot2

Si tu conjunto de datos contiene una variable que representa grupos o etiquetas puedes pasarla al argumento label.

p + 
  geom_text(aes(label = state))

Agregando etiquetas con geom_label

Si prefieres agregar etiquetas en lugar de textos usa geom_label. La función se comporta de la misma manera que la anterior, pero tiene un color de fondo, haciendo los textos más fáciles de leer.

Etiquetas

p + 
  geom_label(aes(x = -115, y = 25,
                label = "Mapa de los Estados Unidos"),
            stat = "unique")

Uso de la función geom_label para agregar etiquetas en ggplot2

Personalizar las etiquetas

p + 
  geom_label(aes(x = -115, y = 25,
                label = "Mapa de los Estados Unidos"),
            stat = "unique",
            size = 5, color = "red", fill = "green")

Personalizar los colores y tamaño de geom_label

Etiquetar observaciones

p + 
  geom_label(aes(label = state))

Etiquetar observaciones en ggplot2 con geom_label

Usa ggrepel para evitar que los textos o etiquetas se solapen.

Evitar solapamientos con ggrepel

Los textos y las etiquetas se colocan en las coordenadas que selecciones, pero se pueden solapar. El paquete ggrepel proporciona las funciones geom_text_repel y geom_label_repel, que hacen que las etiquetas se repelen tanto como sea posible.

Función geom_text_repel del paquete ggrepel para evitar solapamientos

geom_text_repel

# install.packages("ggrepel")
library(ggrepel)

p + 
  geom_text_repel(aes(label = state))

Función geom_label_repel para agregar etiquetas que no se solapen en ggplot2

geom_label_repel

# install.packages("ggrepel")
library(ggrepel)

p + 
  geom_label_repel(aes(label = state))

Puedes personalizar los colores, las fuentes otros argumentos de la misma manera que con geom_text o geom_label. Mira los ejemplos del paquete para más casos de uso.

Usa markdown y HTML con ggtext

Si quieres personalizar las anotaciones completamente usa la función geom_richtext del paquete ggtext, ya que permite añadir formato markdown o HTML a tus anotaciones de texto.

Texto enriquecido

# install.packages("ggtext")
library(ggtext)

lab <- "*Mapa* de <span style = 'color:red'>USA</span>"
p + 
  geom_richtext(aes(x = -115, y = 25,
                    label = lab))

Función geom_richtext para agregar texto enriquecido, HTML o Markdown en ggplot2

Rotar el texto

La función permite incluso rotar el texto, algo que no es posible con las funciones de ggplot2.

# install.packages("ggtext")
library(ggtext)

lab <- "*Mapa* de <span style = 'color:red'>USA</span>"
p + 
  geom_richtext(aes(x = -115, y = 27,
                    label = lab),
                angle = 25)

Rotar o girar una etiqueta de texto en ggplot2

También te puede interesar