2013-05-03 17 views
61

Sto tracciando le linee con ggplot2 come questo:controllo ggplot2 sguardo leggenda senza influenzare la trama

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

current plot.

Trovo che i segni di legenda siano piccoli, quindi voglio che siano più grandi. Se cambio la dimensione, linee sul terreno cambiano troppo:

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

thick plot lines.

Ma voglio solo vedere le linee spesse nella legenda, voglio che le linee sulla trama siano sottili. Ho cercato di usare legend.key.size ma cambia il quadrato del marchio, non il larghezza della linea:

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

Ho anche cercato di utilizzare i punti:

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

ma naturalmente colpisce ancora sia trama e leggenda:

points

Volevo utilizzare le linee per la trama e punti/punti per la legenda.

Così mi sto chiedendo di due cose:

  1. Come modificare la larghezza della linea nella leggenda senza cambiare la trama?
  2. Come disegnare linee nella trama, ma disegnare punti/punti/quadrati nella legenda?

risposta

92

Per modificare la linea larghezza solo nella leggenda si dovrebbe utilizzare la funzione guides() e poi per l'uso colour=guide_legend() con override.aes= e impostare size=. Questo sovrascriverà la dimensione utilizzata nella trama e utilizzerà il nuovo valore di dimensione solo per la legenda.

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

per ottenere punti nella leggenda e linee nella trama soluzione sarebbe aggiungere geom_point(size=0) per garantire che i punti sono invisibili e quindi in guides() impostato linetype=0 per rimuovere le linee e size=3 per ottenere punti più grandi.

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

Impressionante, grazie! Questo è quello di cui avevo bisogno! Qualche possibilità di rispondere alla mia seconda domanda? – baltazar

+0

Aggiornato la mia risposta –

+2

Può essere impostato in un tema? – nate

Problemi correlati