2013-05-03 7 views
61

Ich Linien mit ggplot2 wie diese Plotten:Steuerung ggplot2 Legende Look, ohne die Handlung zu beeinflussen

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + theme_bw() 

current plot.

Ich finde Legendenmarkierungen klein, also möchte ich, dass sie größer sind.

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line(size=4) + theme_bw() 

thick plot lines: Wenn ich ändern, um die Größe, Linien auf dem Grundstück ändern.

Aber ich möchte nur dicke Linien in der Legende sehen, ich möchte Linien auf der Handlung dünn sein. Ich habe versucht, legend.key.size zu verwenden, aber es ändert sich das Quadrat der Marke, nicht die Breite der Linie:

library(grid) # for unit 
ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw() + theme(legend.key.size=unit(1,"cm")) 

big legend keys

Ich habe auch versucht, Punkte zu verwenden:

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + geom_point(size=4) + theme_bw() 

Aber natürlich es wirkt sich nach wie vor sowohl Handlung und Legende:

points

Ich wollte Linien für das Diagramm und Punkte/Punkte für die Legende verwenden. Ich bitte um zwei Dinge

Also:

  1. Wie Breite der Linie in der Legende zu ändern, ohne die Handlung zu ändern?
  2. Wie zeichne Linien in der Handlung, aber zeichne Punkte/Punkte/Quadrate in der Legende?

Antwort

92

Linienbreite in der Legende nur ändern Sie Funktion guides() und dann für colour= Verwendung guide_legend() mit override.aes= und setzen size= verwenden sollten. Dies überschreibt die im Plot verwendete Größe und verwendet einen neuen Größenwert nur für die Legende.

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+ 
     guides(colour = guide_legend(override.aes = list(size=3))) 

enter image description here

Um Punkte in der Legende und Linien in Handlung Abhilfe geom_point(size=0) würde zu erhalten hinzufügen, um sicherzustellen, dass die Punkte sind unsichtbar und dann in guides()linetype=0 gesetzt Linien zu entfernen und size=3 größere Punkte.

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+ 
     geom_point(size=0)+ 
     guides(colour = guide_legend(override.aes = list(size=3,linetype=0))) 

enter image description here

+0

Awesome, thanks! Das habe ich gebraucht! Irgendwelche Chancen, meine zweite Frage zu beantworten? – baltazar

+0

Meine Antwort aktualisiert –

+2

Kann dies in einem Thema festgelegt werden? – nate

Verwandte Themen