Aumentar la distancia entre el texto y el título en el eje y

107

El título del eje y aparece demasiado cerca del texto del eje.

ggplot(mpg, aes(cty, hwy)) + geom_point()

salida de ggplot

He intentado cambiar el valor de muchos parámetros con theme()pero ninguno parece ayudar.

Ernesto A
fuente

Respuestas:

171

Desde ggplot2 2.0.0puede usar el margin =argumento de element_text()para cambiar la distancia entre el título del eje y los números. Establezca los valores del lado marginon top r, bight, ottom y left del elemento.

ggplot(mpg, aes(cty, hwy)) + geom_point()+
  theme(axis.title.y = element_text(margin = margin(t = 0, r = 20, b = 0, l = 0)))

margintambién se puede usar para otros element_textelementos (ver ?theme), como axis.text.x, axis.text.yy title.

Didzis Elferts
fuente
4
Este método no parece funcionar facet_grid, mientras que la respuesta sugerida por Adam B sí (es decir, un salto de línea usando \ n)
Anónimo
@Anónimo ¿Puede dar un ejemplo en el que este margin =argumento no funcione?
Didzis Elferts
Lo probé con theme_bw. Lo siento, publicar todo el código es ilegible / desordenado ...
Anónimo
3
@Anónimo Si usa, theme_bw()entonces theme_bw()debe usarse antes de la theme()función porque en los temas predefinidos ya hay argumentos para los títulos de los ejes.
Didzis Elferts
¡Gracias por la aclaración!
Anónimo
97

Basado en esta publicación del foro: https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU

Parece que lo más fácil de hacer es agregar un salto de línea (\ n) antes del eje x y después de las etiquetas del eje y. Parece mucho más fácil (aunque más tonto) que las soluciones publicadas anteriormente.

ggplot(mpg, aes(cty, hwy)) + 
    geom_point() + 
    xlab("\nYour_x_Label") + ylab("Your_y_Label\n")

¡Espero que ayude!

Adam B
fuente
4
Normalmente uso este método, es mucho más rápido y no requiere agregar otra opción a ggplot a menos que necesite algunos ajustes específicos.
R. Prost