Controlla la leggenda di ggplot2 senza influire sulla trama

Sto tracciando linee con ggplot2 in questo modo:

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

trama corrente .

Trovo che i marchi leggendari siano piccoli, quindi voglio che siano più grandi. Se cambio la dimensione, anche le linee sulla trama cambiano:

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

linee di trama spesse .

Ma voglio solo vedere linee spesse nella leggenda, voglio che le linee sulla trama siano sottili. Ho provato ad usare legend.key.size ma cambia il quadrato del marchio, non la 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")) 

grandi chiavi della leggenda

Ho anche provato a usare i punti:

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

Ma ovviamente influenza ancora sia la trama che la leggenda:

punti

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

Quindi sto chiedendo due cose:

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

Per cambiare la larghezza della linea solo nella legenda, dovresti usare le guides() funzioni guides() e poi per colour= usare 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))) 

inserisci la descrizione dell'immagine qui

Per ottenere punti in legenda e linee nella soluzione alternativa, aggiungere geom_point(size=0) per garantire che i punti siano invisibili e quindi in guides() impostare linetype=0 per rimuovere le righe 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))) 

inserisci la descrizione dell'immagine qui