ggplot2 márgenes del área de la parcela?

86

¿Existe una manera fácil de aumentar el espacio entre el título de la parcela y el área de la parcela debajo de él (el cuadro con los datos)? De manera similar, preferiría tener algo de espacio entre el título del eje y las etiquetas del eje.

En otras palabras, ¿hay alguna manera de "mover el título un poco hacia arriba, el título del eje y un poco hacia la izquierda y el título del eje x un poco hacia abajo"?

KT.
fuente
1
Siempre puede pegar algunos "\n"caracteres en los títulos para forzar nuevas líneas.
joran

Respuestas:

113

Puede ajustar los márgenes de la trama con plot.marginen theme()y luego mover las etiquetas de los ejes y el título con el vjustargumento de element_text(). Por ejemplo :

library(ggplot2)
library(grid)
qplot(rnorm(100)) +
    ggtitle("Title") +
    theme(axis.title.x=element_text(vjust=-2)) +
    theme(axis.title.y=element_text(angle=90, vjust=-0.5)) +
    theme(plot.title=element_text(size=15, vjust=3)) +
    theme(plot.margin = unit(c(1,1,1,1), "cm"))

te dará algo como esto:

ingrese la descripción de la imagen aquí

Si desea más información sobre los diferentes theme()parámetros y sus argumentos, puede ingresar ?themeen el indicador R.

juba
fuente
4
¡Gracias! No estaba seguro de qué proporcionar grid::unitspara que esto funcione para el plot.marginargumento. Resulta que tienes que proporcionar un número 4 de longitud para units. Lástima que el xargumento de que unitsno se recicla de alguna manera. Además, probablemente ya sepa esto, pero vale la pena señalar / actualizar que optsahora está en desuso en la última versión de ggplot2 (0.9.2+), reemplazado por theme, como theme_textahora es reemplazado por element_text.
Paul McMurdie
44
El orden de los bordes para plot.margin es unit (c (arriba, derecha, abajo, izquierda), unidades) si alguien más quiere ahorrar tiempo buscando eso.
mightypile
16
@generic_user: tal vez sea más fácil de recordar como se indica aquí :t, r, b, l (To remember order, think trouble).
Tung
3
Como alternativa para recordar ... es sólo las agujas del reloj desde la parte superior: top, right, bottom, left.
spops el
1
también:margin(t, r, l, b)
Brian D