2013-04-17 7 views
5

Sto provando a creare un grafico a dispersione in ggplot2 con una mappatura delle dimensioni su una terza variabile e sui contorni di densità2d. Sembra che la leggenda venga confusa dall'inclusione dei contorni density2d.Legenda insolita con mappatura delle dimensioni e densità2d

Ad esempio, il seguente codice funziona:

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

Ma ora, nota la leggenda si comporta in modo insolitamente quando aggiungo in una chiamata a stat_density2d(). In particolare, la leggenda grafico mostra blocchi blu al posto dei cerchi neri:

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

plot legend shows blue blocks instead of black circles

risposta

6

Come size= è una delle dell'estetica che si possono impostare per il stat_density2d() e in questo caso è impostato in ggplot() chiamata, la legenda è fatta per entrambe le linee e i punti (i punti sono nascosti sotto le righe nella legenda come geom_point() viene chiamato prima dello stat_density2d()). Per rimuovere le linee blu dalla legenda, è possibile impostare manualmente size=0.5 (o qualche altro valore) all'interno di stat_density2d() e la legenda sarà corretta.

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

enter image description here

+2

(+1) io non sono sicuro se questo è utile, ma scambiando l'ordine mostra sia le leggende (in pratica i cerchi pieni si nascondevano dietro i rettangoli): 'ggplot (dd, aes (x, y, size = z)) + stat_density2d() + geom_point() ' – Arun

+1

@Arun sì, hai ragione - entrambe le leggende sono tracciate (appena nascoste). La soluzione mostra come eliminare le larghezze delle linee nella legenda (poiché in questo caso non sono significative) –

+0

Impressionante, grazie! – js86

Problemi correlati