2013-04-17 16 views
5

Ich versuche, ein Streudiagramm in ggplot2 mit einer Größenzuordnung zu einer dritten Variablen und Dichte2d Konturen zu machen. Es scheint, als ob die Legende durch die Einbeziehung von Dichte 2D Konturen verwirrt wird.Ungewöhnliche Legende mit Größenmapping und Dichte2d

Zum Beispiel der folgende Code funktioniert:

library('ggplot2') 
set.seed(1) 
x=rnorm(100); y=rnorm(100,sd=10); z=seq(1,10,length.out=100) 
dd=data.frame(x=x,y=y,z=z) 
ggplot(dd,aes(x,y,size=z))+geom_point() 

plot looks normal

Aber jetzt, beachten Sie die Legende ungewöhnlich verhält, wenn ich in einem Aufruf von stat_density2d() hinzuzufügen. Insbesondere die Plotlegende blauen Blöcke statt schwarzen Kreisen zeigt:

ggplot(dd,aes(x,y,size=z))+geom_point()+stat_density2d() 

plot legend shows blue blocks instead of black circles

Antwort

6

Als size= ist eine der Ästhetik Sie für die stat_density2d() und in diesem Fall einstellen kann es in ggplot() Aufruf festgelegt ist, Legende wird für beide erstellt - Linien und Punkte (Punkte werden unter Linien in der Legende als geom_point() wird vor stat_density2d() aufgerufen). Um blaue Linien aus der Legende zu entfernen, können Sie size=0.5 (oder einen anderen Wert) innerhalb der stat_density2d() manuell setzen und dann wird die Legende korrekt sein.

ggplot(dd,aes(x,y,size=z))+geom_point()+stat_density2d(size=0.5) 

enter image description here

+2

(+1) Ich bin nicht sicher, ob dies hilfreich ist, aber die Reihenfolge Vertauschen zeigt beide Legenden (im Grunde die gefüllten Kreise wurden hinter den Rechtecke versteckt): 'ggplot (dd, aes (x, y, size = z)) + stat_density2d() + geom_point() ' – Arun

+1

@Arun Ja, du hast Recht - beide Legenden sind geplottet (nur versteckt). Lösung zeigt, wie Linienbreiten in der Legende loswerden (wie sie in diesem Fall nicht sinnvoll sind) –

+0

Ehrfürchtig, danke! – js86

Verwandte Themen