Usando ggplot2
, gostaria de ter duas legendas na mesma linha, abaixo do título, mas uma alinhada à esquerda e outra alinhada à direita para um gráfico facetado como o abaixo.
Posso ter uma legenda alinhada à esquerda:
p <- ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
facet_grid(am~.) +
theme(plot.title=element_text(hjust=0.5))
p + labs(title="Data: mtcars", subtitle="Subtitle (left-aligned)")
ou alinhado à direita,
p + labs(title="Data: mtcars", subtitle="Subtitle (right-aligned)") +
theme(plot.subtitle=element_text(hjust=1))
Mas parece que não consigo ter os dois, a menos que eu os combine com um número arbitrariamente grande de espaços entre eles (que é como eu fiz o gráfico acima). Mas não gosto dessa solução. Existe outra maneira?
Hackeado e assustador, mas funciona. Você pode passar um vetor para
subtitle=
e definir o alinhamento de cada elemento passando um vetor parahjust=
(o que, obviamente, não é oficialmente suportado):É meio complicado, mas você poderia fazer algo assim...
ou (melhor, conforme o comentário de Stefan abaixo), use
annotate
...O
subtitle
argumento em branco apenas cria um pouco de espaço. O finalclip = "off"
permite que você plote fora da área normal do gráfico. AI(0)
notação permite usar coordenadas relativas, onde 0 é esquerda/inferior e 1 é direita/superior. Tive que usary=I(2.1)
, pois você tem duas facetas no seu gráfico, assimy=I(1)
como o topo da faceta inferior.