2016-04-13 12 views
5

Próbuję uzasadnić wiele legend w ggplot, ale bez żadnego rzeczywistego sukcesu. Podczas wyświetlania legendy poza obszarem wykresu (szare pole) uzasadnienie jest poprawne. Jednak podczas wyświetlania legend wewnątrz obszaru wykresu, legendy są wyśrodkowane (i chciałbym, aby były wyrównane do lewej strony). Próbowałem postępować zgodnie z this thread, ale nadal nie działa poprawnie.Kilka uzasadnień legendy

Mój przykład:

library(ggplot2) 

ggplot(mtcars, aes(wt, mpg)) + 
    geom_point(aes(colour = factor(cyl), size = qsec)) + 
    geom_point(aes(colour = factor(cyl), size = qsec)) + 
    theme(legend.justification = c(1,0), 
     legend.position = c(1,0), 
     legend.margin = unit(0,"lines"), 
     legend.box = "vertical", 
     legend.key.size = unit(1,"lines"), 
     legend.text.align = 0, 
     legend.title.align = 0) 

Odpowiedz

5

Musimy dodać legend.box.just = "left" do istniejącej theme().

ggplot(mtcars, aes(wt, mpg)) + 
    geom_point(aes(colour = factor(cyl), size = qsec)) + 
    geom_point(aes(colour = factor(cyl), size = qsec)) + 
    theme(legend.box.just = "left", 
     legend.justification = c(1,0), 
     legend.position = c(1,0), 
     legend.margin = unit(0,"lines"), 
     legend.box = "vertical", 
     legend.key.size = unit(1,"lines"), 
     legend.text.align = 0, 
     legend.title.align = 0) 

enter image description here

+0

Dziękujemy za szybką odpowiedź. Ten całkowicie rozwiązał mój problem! – Adela

1

Można spróbować to:

library(ggplot2) 
data("mtcars") 
g <- ggplot(mtcars, aes(wt, mpg)) 
g <- g + geom_point(aes(colour = factor(cyl), size = qsec)) 
g <- g + geom_point(aes(colour = factor(cyl), size = qsec)) 
g <- g + theme(legend.justification=c(0,0), legend.position=c(0,0)) 

dla innych pozycjach można spróbować z tej dokumentacji http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/

enter image description here

Prawdopodobnie znajdziesz lepszego wyjaśnienia także w ab ove link.

+0

Jeśli spojrzysz, że bliższe legendy nie są wyrównane po lewej stronie, to był problem PO. – zx8754

+0

@ zx8754 Nie dostałem cię całkowicie, czy to oznacza, że ​​legendy powinny dotykać wewnętrznej granicy działek po lewej stronie? –

+0

@krishna: Niestety, twój post nie rozwiązuje mojego problemu, ponieważ potrzebuję, aby obie legendy były wyrównane lewostronnie. Jak napisał zx8754, jeśli przyjrzysz się bliżej, zobaczysz, że nadal są wycentrowane - zmieniła się tylko pozycja legend. Zx8754 już rozwiązał mój problem (patrz poprzedni wpis). W każdym razie, dzięki za próbowanie! – Adela