2015-03-02 5 views
2

У меня есть сюжет, сделанный с ggplot2, и я хотел бы получить легенду, расположенную в верхнем левом углу .ggplot: положение легенды в левом верхнем углу

legend.position = "top" получает мне легенду, расположенную над сюжетом, но по центру:

Legend is on top, but centered

legend.position = c(0,1) получает легенду в левом верхнем углу, но она плывет над другими элементами сюжета:

Look at that legend float!

Знайте, как получить эту легенду в левом верхнем углу, не плавая? Я попробовал объявить легенду высоту, но не кубики. Должен ли я настраивать размер и положение названия и области графика?

Спасибо!

+1

Вы можете дополнительно уточнить позицию 'легенды .justification = c (1,1) '- например,' p + theme (legend.position = c (1,1), legend.justification = c (1,1)) '. Так как это все равно будет отображаться в графической области, вы также можете поиграть с 'legend.background = element_blank()' и 'legend.key = element.blank()'. – JasonAizkalns

+0

Спасибо, я ошибся в оригинальном вопросе (он был отредактирован). Я имел в виду верхний левый, извините! 'legend.justification' помогает позиционировать легенду в самый раз, но плавает над графической областью. Я бы хотел, чтобы легенда вышла из графической области, например 'legend.position =" top "' делает это красиво. –

ответ

7

Как о чем-то вроде этого - не уверен, что есть способ избежать «рубить» \n\n\n в вызове ggtitle()

library(ggplot2) 

ggplot(mtcars, aes(x=factor(cyl), y=mpg, fill=factor(cyl))) + 
    geom_boxplot() + 
    ggtitle("A Title for Plot\n\n\n") + 
    theme(legend.position=c(0,1), 
     legend.justification=c(0, 0), 
     legend.direction="horizontal") 

Plot with Left-Justified Title Above Plot

+1

Спасибо! Gosh, это намного проще, чем мое решение: используйте gridExtra, чтобы вырезать заголовок, легенду и сюжет, а затем переставить их в таблицу: https://gist.github.com/conorsg/54f99d46206301f74169#file-gistfile1-r –

Смежные вопросы