Saltar al contenido

Cómo mantener el tamaño de ggplot con etiquetas largas

Agradecemos tu ayuda para extender nuestros artículos acerca de las ciencias informáticas.

Solución:

Hay varias formas de evitar el trazado excesivo de etiquetas o apretar el área de trazado o mejorar la legibilidad en general. Cuál de las soluciones propuestas es la más adecuada dependerá de las longitudes de las etiquetas y del número de barras, y de otros factores. Entonces, probablemente tendrás que jugar.

Datos ficticios

Desafortunadamente, el OP no ha incluido un ejemplo reproducible, por lo que tenemos que inventar nuestros propios datos:

V1 <- c("Long label", "Longer label", "An even longer label",
        "A very, very long label", "An extremely long label",
        "Long, longer, longest label of all possible labels", 
        "Another label", "Short", "Not so short label")
df <- data.frame(V1, V2 = nchar(V1))
yaxis_label <- "A rather long axis label of character counts"

Gráfico de barras "estándar"

Las etiquetas en el eje x se imprimen en posición vertical, superponiéndose entre sí:

library(ggplot2)  # version 2.2.0+
p <- ggplot(df, aes(V1, V2)) + geom_col() + xlab(NULL) +
  ylab(yaxis_label) 
p

Tenga en cuenta que el agregado recientemente geom_col() en lugar de geom_bar(stat="identity") esta siendo usado.

ingrese la descripción de la imagen aquí

Enfoque de OP: rotar etiquetas

Las etiquetas en el eje x se giran 90° grados, comprimiendo el área de trazado:

p + theme(axis.text.x = element_text(angle = 90))

ingrese la descripción de la imagen aquí

gráfico de barras horizontales

Todas las etiquetas (incluida la etiqueta del eje Y) se imprimen en posición vertical, lo que mejora la legibilidad pero aún aprieta el área de trazado (pero en menor medida ya que el gráfico está en formato horizontal):

p + coord_flip()

ingrese la descripción de la imagen aquí

Gráfico de barras verticales con etiquetas envueltas

Las etiquetas se imprimen en posición vertical, lo que evita el trazado excesivo y reduce la compresión del área de trazado. Puede que tengas que jugar un poco con el width parámetro a stringr::str_wrap.

q <- p + aes(stringr::str_wrap(V1, 15), V2) + xlab(NULL) +
  ylab(yaxis_label)
q

ingrese la descripción de la imagen aquí

Gráfico de barras horizontales con etiquetas envueltas

Mi enfoque favorito: todas las etiquetas se imprimen en posición vertical, lo que mejora la legibilidad y reduce la compresión del área de trazado. Una vez más, puede que tenga que jugar un poco con el width parámetro a stringr::str_wrap para controlar el número de líneas en las que se dividen las etiquetas.

q + coord_flip()

ingrese la descripción de la imagen aquí

Apéndice: Abrevie las etiquetas usando scale_x_discrete()

En aras de la exhaustividad, debe mencionarse que ggplot2 es capaz de abreviar etiquetas. En este caso, el resultado me parece decepcionante.

p + scale_x_discrete(labels = abbreviate)

ingrese la descripción de la imagen aquí

Para aclarar, lo que esta pregunta parece estar preguntando es cómo especificar el tamaño del panel en ggplot2.

Creo que la respuesta correcta a esta pregunta es 'simplemente no puedes hacer eso'.

En este momento, no parece haber ningún parámetro que pueda configurarse en ninguna función de ggplot2 que logre esto. Si hubiera uno, creo que lo más probable sería en forma de height y width argumentos a un element_rect llamar dentro de una llamada a theme (que es cómo hacemos otros cambios en el panel, por ejemplo, alterando su color de fondo), pero no hay nada parecido a los de los documentos para element_rect así que mi mejor suposición es que especificar el tamaño del panel es imposible:

https://ggplot2.tidyverse.org/reference/element.html

La siguiente referencia es antigua, pero no puedo encontrar nada más actualizado que confirme positivamente si este es el caso o no:

https://groups.google.com/forum/#!topic/ggplot2/nbhph_arQ7E

En esa discusión, alguien pregunta si es posible especificar el tamaño del panel y Hadley responde: "Todavía no, pero está en mi lista de tareas pendientes". Eso fue hace nueve años; Supongo que todavía está en su lista de tareas pendientes.

Reseñas y puntuaciones de la guía

Te invitamos a añadir valor a nuestra información colaborando tu experiencia en las anotaciones.

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


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

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