¿Cómo obtener burbujas superpuestas en la leyenda de ggplot en R?
He notado que el NYT y The Economist a menudo tienen estas leyendas de burbuja geniales, pero he tenido dificultades para producir lo mismo en R. ¿Alguien sabe cómo hacer esto en ggplot2?
davy.ai
Sí, es posible crear leyendas de burbujas en ggplot2. Una forma de hacerlo es utilizando el paquete
ggnewscale
, que permite agregar nuevas escalas sin sobrescribir las existentes. Aquí tienes un ejemplo de código para crear una leyenda de burbujas similar a la que se muestra en la imagen:“`{r}
library(ggplot2)
library(ggnewscale)
crear el gráfico principal con las burbujas
p <- ggplot(data = mtcars, aes(x = wt, y = mpg, size = qsec)) +
geom_point(alpha = 0.8)
crear datos ficticios para la leyenda
datos_leyenda <- data.frame(size = c(10, 20, 30), label = c(“pequeño”, “mediano”, “grande”))
agregar una nueva escala para el tamaño de las burbujas con los datos ficticios
p <- p + new_scale_size() +
scale_size_manual(values = datos_leyenda$size)
agregar la leyenda utilizando geom_point con relleno transparente y etiquetas
p <- p + geom_point(data = datos_leyenda, aes(x = 0, y = 0, size = size),
fill = “transparent”, shape = 21, color = “black”) +
geom_text(data = datos_leyenda, aes(x = 0, y = 0, label = label),
size = 5, nudge_y = 1) +
guides(size = “none”)
ajustar la apariencia del gráfico y la leyenda
p <- p + xlim(1, 6) + ylim(10, 35) +
theme_classic() +
theme(legend.position = “none”,
panel.background = element_rect(fill = “lightgray”),
axis.text = element_text(size = 12))
p
“`
En este ejemplo, primero creamos el gráfico principal con las burbujas utilizando el atributo
size
para controlar su tamaño. Luego, creamos datos ficticios para la leyenda con tres tamaños de burbujas y sus etiquetas correspondientes. Utilizamosnew_scale_size()
para agregar una nueva escala solo para el tamaño de las burbujas en la leyenda, yscale_size_manual()
para establecer los valores de tamaño basados en los datos ficticios.Luego, agregamos la leyenda utilizando
geom_point
con relleno transparente ygeom_text
para las etiquetas. Utilizamosguides(size = "none")
para eliminar la guía de tamaño original del gráfico principal.Finalmente, ajustamos la apariencia del gráfico y la leyenda utilizando varios comandos
theme
. Ten en cuenta que es posible que necesites ajustar el tamaño y la posición de la leyenda para que se adapten a tus necesidades específicas.