Añadiendo círculos alrededor de las etiquetas de los ejes.
Me gustaría dibujar un círculo rojo alrededor de las etiquetas específicas en el eje y. Tengo los siguientes datos y código para hacer un gráfico:
data <- structure(list(group = c("1", "1", "1", "2", "2", "2", "3", "3", "3"), word = c("headache", "computer", "window", "window", "plant", "coffee", "headache", "sky", "computer"), n = c(115L, 125L, 130L, 132L, 134L, 157L, 195L, 209L, 215L), row = 1:9), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -9L))
Define algunos colores para usar en todo el documento:
my_colors <- c("#FFDBCE", "#8CAEAE", "#beb6d7")
wordfrequencyplot <- data %>%
ggplot(aes(row, n, fill = as.factor(group))) +
geom_col(show.legend = F) +
labs(x = NULL, y = "Word Count") +
facet_wrap(~group, scales = "free_y", "fixed_x") +
scale_x_continuous(
breaks = data$row,
labels = data$word) +
scale_fill_manual(values = my_colors) +
coord_flip() +
theme_bw()
Quiero dibujar círculos alrededor de las palabras “coffee” y “plant” en el grupo 2, y “sky” en el grupo 3 en el eje y.
davy.ai
Para dibujar círculos alrededor de las etiquetas específicas en el eje y, podemos utilizar la función
geom_label()
deggplot2
junto con la funciónannotation_custom()
para crear una forma personalizada como etiqueta. Aquí está el código para agregar círculos rojos alrededor de las palabras especificadas:{r}
wordfrequencyplot +
annotate("custom", xmin = 2.5, xmax = 2.5, ymin = 157, ymax = 157,
label = as.character(expression("\u25cf")), ## crear un círculo rojo con unicode
colour = "red", size = 5, label.size = 0) +
annotate("custom", xmin = 5.5, xmax = 5.5, ymin = 134, ymax = 134,
label = as.character(expression("\u25cf")),
colour = "red", size = 5, label.size = 0) +
annotate("custom", xmin = 8.5, xmax = 8.5, ymin = 209, ymax = 209,
label = as.character(expression("\u25cf")),
colour = "red", size = 5, label.size = 0)
Explicación del código:
– La función
annotate()
se utiliza para agregar una forma personalizada (círculo) al gráfico.–
xmin
yxmax
especifican la posición de la etiqueta en el eje x (en este caso, el punto medio de la columna).–
ymin
yymax
especifican la posición de la etiqueta en el eje y (en este caso, la coordenada y de la etiqueta específica que queremos resaltar).–
label
especifica el contenido de la etiqueta (en este caso, un círculo rojo).–
colour
ysize
especifican la apariencia del círculo.–
label.size
se establece en 0 para hacer invisible la etiqueta (solo necesitamos el círculo).Es importante tener en cuenta que debemos especificar las coordenadas x e y manualmente para cada etiqueta, ya que el gráfico utiliza los números de fila como etiquetas del eje x pero queremos dibujar círculos alrededor de palabras específicas. Por lo tanto, debemos encontrar el número de fila de cada palabra y utilizarlo para especificar la posición del círculo.