2012-05-18 2 views
21

Das muss jemanden in der Vergangenheit geärgert haben, also entschuldige mich wenn es ein Duplikat ist und ich werde es entfernen. Bei der Verwendung von geom_bar kann es zu nervenden Querungen kommen. z.B .:ggplot legende slashes

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

Als ich farbigen Balken verwende ich diese Arbeit um verwenden, Plotten Bars ohne Farben zuerst z.B.

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

Wenn die Füllung jedoch weiß ist, bleibt in der Legende ein unbefriedigender leerer weißer Kasten ohne Umrandung. z.B.

enter image description here

Ich habe dies in der Vergangenheit fixierte manuell Grafik-Software verwenden, aber jetzt denke ich, dies genug, um Menschen von Nutzen sein muß hier eine Frage zu stellen. Können wir ggplot die Legende nur mit der schwarzen Umrandung darstellen, aber ohne den Schrägstrich?

+1

Große Frage +1 –

Antwort

13

dies,

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

gab dieser mir, enter image description here dank this site.

Alos, erhalten Sie das gleiche Ergebnis mit colour statt fill (es könnte argumentiert werden, dass man besser ist als).

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

Wichtiger Hinweis: In modernen Versionen von ggplot2 opts wurde mit theme veraltet und ersetzt, und theme_rect durch element_rect ersetzt.

+2

'opts (legende.key = theme_rect' es ist so einfach! –

+0

@ user1317221_G, das ist die Schönheit davon. –

+0

Ich stehe gerne korrigierte +1 –

3

Nein, das ist es, was es gibt es skizziert. Wenn Sie ein Grau statt Weiß (mit Ihrem Trick) verwenden, ist es besser unterscheidbar. Sie könnten der Legende auch Hintergrundfarbe hinzufügen, um sie besser unterscheidbar zu machen und sie weiß zu halten. Siehe unten auf dieser Seite für weitere Informationen:

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

ich wünsche es ein weniger hackish Weg, dies zu tun wäre.

+0

Ich glaube, die Lösung im Kochbuch ist allgemeiner. Diese Frage befasst sich mehr mit dem Problem des Befehls legend.key als das Entfernen der Schrägstriche. – marbel

+2

@Martin du reagierst auf einen Beitrag, der über ein Jahr alt ist, also hat sich ein bisschen seitdem das Kochbuch einschließlich geändert. Es hat auch alles mit dem Entfernen der Schrägstriche zu tun. Sehen Sie den Titel der Frage und den Inhalt. Zu dieser Zeit existierten noch nicht alle fantastischen Legenden, oder sie wurden gerade eingeführt (ggplot2 0.9.0). –

+1

Ich verstehe, dass der Beitrag alt ist, die Sache ist, dass ich mich mit dem gleichen Thema befassen musste und das Kochbuch gab mir eine allgemeinere Antwort. Ich meine, ich folgte deinem Link und es half mir mehr als die akzeptierte Antwort. – marbel