2012-05-18 19 views
21

To musiało mnie zirytować w przeszłości, więc przepraszam, jeśli to jest duplikat, a ja go usunę. Ukośniki w legendach podczas używania geom_bar mogą być denerwujące. np .:ggplot legendy tnie

x <- c("a","b") 
y <- c(1,2) 
df <- as.data.frame(cbind(x,y)) 
a <- ggplot(df,aes(x=x,y=y,fill=x)) 
a + geom_bar(colour="black") + scale_fill_manual(values=c("white", "black")) 

enter image description here

Kiedy używać kolorowych pasków Używam tego obejść, kreślenia prętów bez kolorów pierwszy przykład

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) + 
scale_fill_manual(values=c("white", "black")) 

Jednak gdy wypełnienie jest białe pozostawia niezadowalające puste białe pudełko w legendzie bez obramowania. na przykład

enter image description here

Mam stałe w przeszłości ręcznie przy użyciu programów graficznych, ale teraz myślę, że musi to być użyteczne dla ludzi na tyle, aby zadać pytanie tutaj. Czy możemy wykonać legalizację tylko z czarnym konturem, ale bez ukośnika?

+1

Świetne pytanie +1 –

Odpowiedz

13

tym

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) + 
scale_fill_manual(values=c("white", "black")) + 
opts(legend.key = theme_rect(fill = 'black')) 

dał mi to, enter image description here dzięki this site.

Alos, otrzymujesz taki sam wynik, używając colour zamiast fill (można argumentować, że jeden jest lepszy niż).

a + geom_bar() + geom_bar(colour="black",show_guide=FALSE) + 
scale_fill_manual(values=c("white", "black")) + 
opts(legend.key = theme_rect(colour = 'black')) 

Ważna uwaga: W nowoczesnych wersjach ggplot2 opts została wycofana i zastąpiona theme i theme_rect został zastąpiony przez element_rect.

+2

'opts (legend.key = theme_rect' to takie proste! –

+0

@ user1317221_G, to jest piękne –

+0

Ja chętnie poprawiam się +1 –

3

Nie, to właśnie nadaje temu zarys. Jeśli używasz szarego zamiast białego (z twoją sztuczką), to jest bardziej rozpoznawalne. Możesz również dodać kolor tła do legendy, aby był bardziej rozpoznawalny i utrzymywał biały kolor. Na dole tej strony, aby uzyskać więcej szczegółów:

http://wiki.stdout.org/rcookbook/Graphs/Legends%20(ggplot2)/

Szkoda, że ​​nie były mniej hackish sposób to zrobić.

+0

Uważam, że rozwiązanie w książce kucharskiej jest bardziej ogólne. To pytanie dotyczy raczej kwestii legend.key niż usuwania ukośników. – marbel

+2

@Martin odpowiadasz na post, który ma ponad rok, więc od tego czasu trochę się zmieniło, łącznie z książką kucharską. Ma również wszystko, co trzeba zrobić, usuwając ukośniki. Zobacz tytuł pytania i treść. W tym czasie nie istniały ani nie istniały fantazyjne legendy (ggplot2 0.9.0). –

+1

Rozumiem, że post jest stary, chodzi o to, że miałem do czynienia z tym samym problemem, a książka kucharska dała mi bardziej ogólną odpowiedź. Mam na myśli, że podążyłem za twoim łączem i to pomogło mi bardziej niż zaakceptowana odpowiedź. – marbel

Powiązane problemy