Saltar al contenido

R ggplot2: la leyenda en la parte inferior se corta, ¿cómo encontrar el número óptimo de columnas para la leyenda sobre la marcha?

Posterior a de una prolongada recopilación de datos hemos podido resolver este enigma que pueden tener ciertos los lectores. Te brindamos la respuesta y esperamos serte de gran apoyo.

Solución:

Esto funcionó:

  • reducir el tamaño de fuente (width_scale en lugar de width_scale * 1.5)
  • añadir un cuadro alrededor de la leyenda
ggplot2::ggplot(mydf, ggplot2::aes(group, value, fill=var)) +
    ggplot2::geom_bar(stat="identity") +
    ggplot2::scale_y_continuous("%") +
    ggplot2::theme_light() +
    ggplot2::theme(legend.text=ggplot2::element_text(size=width_scale),
                   legend.box.margin = margin(6, 6, 6, 6),
                   legend.title=ggplot2::element_text(size=1.5*width_scale,face="bold"),
                   legend.position="bottom",
                   legend.key.size = grid::unit(width_scale/50, "inch"),
                   legend.key.width = grid::unit(width_scale/50, "inch"))

Ver resultado

Puede ajustar width_scale según el número de elementos en la leyenda:

mydf <- data.frame(group=paste0('gr',1:10), var=paste('some long text -', 1:50), value=runif(500, 0, 100))
width_scale <- 12 * 26 / length(unique(mydf$var))

ajuste de ancho_escala

podrías ajustar size manualmente modificando el valor del tamaño hasta que los gráficos coincidan con sus requisitos?

print(#or ggsave()
  ggplot2::ggplot(mydf, ggplot2::aes(group, value, fill=var)) +
    ggplot2::geom_bar(stat="identity") +
    ggplot2::scale_y_continuous("%") +
    ggplot2::theme_light() +
    ggplot2::theme(legend.text=ggplot2::element_text(size=14), legend.position = "bottom"),
                   legend.title=ggplot2::element_text(size=1.5*width_scale,face="bold"),
                   legend.key.size = grid::unit(width_scale/50, "inch"),
                   legend.key.width = grid::unit(width_scale/50, "inch"))
) 

ingrese la descripción de la imagen aquí

Calificaciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *