margens da área do gráfico ggplot2?

86

Existe uma maneira fácil de aumentar o espaço entre o título do gráfico e a área do gráfico abaixo dele (a caixa com os dados). Da mesma forma, eu prefiro ter algum espaço entre o título do eixo e os rótulos dos eixos.

Em outras palavras, há uma maneira de "mover o título um pouco para cima, o título do eixo y um pouco para a esquerda e o título do eixo x um pouco para baixo"?

KT.
fonte
1
Você sempre pode colar alguns "\n"caracteres nos títulos para forçar novas linhas.
joran

Respostas:

113

Você pode ajustar as margens do gráfico com plot.marginin theme()e mover os rótulos dos eixos e o título com o vjustargumento de element_text(). Por exemplo :

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"))

lhe dará algo como isto:

insira a descrição da imagem aqui

Se quiser mais informações sobre os diferentes theme()parâmetros e seus argumentos, basta entrar ?themeno prompt R.

Juba
fonte
4
Obrigado! Eu não tinha certeza do que fornecer grid::unitspara fazer este trabalho para o plot.marginargumento. Acontece que você deve fornecer um valor numérico de comprimento 4 para units. É uma pena que o xargumento para unitsnão seja reciclado de alguma forma. Além disso, você provavelmente já sabe disso, mas vale a pena observar / atualizar que optsagora está obsoleto na última versão do ggplot2 (0.9.2+), substituído por theme, como theme_textagora é substituído por element_text.
Paul McMurdie
44
A ordem das arestas para plot.margin é unit (c (superior, direita, inferior, esquerda), unidades) se alguém quiser economizar tempo procurando isso.
mightypile de
16
@generic_user: talvez mais fácil de lembrar, conforme observado aqui :t, r, b, l (To remember order, think trouble).
Tung,
3
Como alternativa para se lembrar ... é só no sentido horário a partir do topo: top, right, bottom, left.
spops
1
também:margin(t, r, l, b)
Brian D