2013-09-26 17 views
5

Sto riscontrando problemi nel cambiare l'alfa dei miei punti (colorati) nella legenda quando aggiungo stat_smooth.Modifica il livello alfa del punto geom nella legenda in cima a stat_smooth

require(ggplot2) 

set.seed(1052) 
dx <- runif(2000,0,10) 
dy <- dx * rep(c(1,-1), each = 1000) + rnorm(2000,0,1) 
dcol <- rep(c(TRUE, FALSE), each = 1000) 
dd <- data.frame(x = dx, y = dy, col = dcol) 

gg <- ggplot(dd) + aes(x = x, y = y, colour = col) + geom_point(alpha = 1/5) 
gg 

The legend is cloudy.

L'alfa dei punti porta verso la legenda (rendendo i colori difficile da vista), ma this question dimostra che è possibile sovrascrivere i dettagli legenda con guides:

magic <- guides(colour = guide_legend(override.aes = list(alpha = 1))) 
gg + magic 

It's fixed!

Freddo. Ma quando lancio il stat_smooth, la magia smette di funzionare.

gg + stat_smooth(method = "lm") 

Line is solid, but point has low alpha.

gg + stat_smooth(method = "lm") + magic 

I don't know what happened here.

Come posso risolvere questo problema? Avrei preferito il risultato qui sotto per la leggenda (sfondo bianco, linee e punti con alpha = 1. (Le questioni sembra andare via se si utilizza geom_line e non stat_smooth)

gg + geom_line(alpha = 1/10) + magic 

Huh.

+1

questo potrebbe essere un bug. Il problema è il nastro di errore standard. Se imposti 'se = FALSE' in' geom_smooth' le cose funzionano di nuovo. Quello che sta succedendo è che si imposta 'alpha' per i punti, ma' geom_smooth' imposta un altro alfa per il nastro. Quando si sostituisce l'alfa della legenda, viene applicato a entrambi i punti e al riempimento grigio. Non ho ancora trovato una soluzione alternativa ... – joran

+1

... un'opzione è di impostare 'show_guide = FALSE' in' geom_smooth', ma poi perdi le righe nella legenda. – joran

+1

prova 'stat_smooth (method =" lm ", se = FALSE)' se non hai bisogno di SE. – kohske

risposta

2

Se si desidera per ottenere rappresentano nell'ordine con solo la linea e il punto e senza sfondo quindi è possibile aggiungere fill=NA all'interno del override.aes= - questo rimuoverà riempimento grigio delle rappresentano nell'ordine che è impostato a causa di intervalli di confidenza di stat_smooth() (se=TRUE) poi, con theme() e legend.key= si può cambiare. bac kground al bianco.

ggplot(dd, aes(x = x, y = y, colour = col)) + geom_point(alpha = 1/5)+ 
    stat_smooth(method = "lm")+ 
    guides(colour = guide_legend(override.aes = list(alpha = 1,fill=NA))) + 
    theme(legend.key=element_rect(fill="white")) 

enter image description here

Problemi correlati