2015-10-22 19 views
6

Ho due grafici. Uno con linee smussate:ggplot2: Sfondo della legenda trasparente quando viene utilizzato stat_smooth

library(splines) 
library(ggplot2) 

ggplot(mtcars, aes(hp, qsec)) + stat_smooth(aes(group = cyl, 
     colour = factor(cyl)), 
     method = "glm", 
     formula = y ~ ns(x, 1), 
     level = 1e-9, 
     size = I(1)) + 
    theme(panel.background=element_rect(fill="transparent",colour=NA), 
     plot.background=element_rect(fill="transparent",colour=NA), 
     legend.key = element_rect(fill = "transparent", colour = "transparent")) 

e uno senza:

ggplot(mtcars, aes(hp, qsec)) + 
    geom_point(aes(group = cyl, colour = factor(cyl))) + 
    theme(panel.background=element_rect(fill="transparent",colour=NA), 
     plot.background=element_rect(fill="transparent",colour=NA), 
     legend.key = element_rect(fill = "transparent", colour = "transparent")) 

Come posso ottenere uno sfondo bianco o trasparente leggenda nella prima trama? E perché gli stessi comandi di tema fanno il lavoro nella seconda trama?

risposta

8

Sembra che lo sfondo grigio provenga da stat_smooth(), come spiegato here. L'aggiunta di se=FALSE, che disattiva gli intervalli di confidenza, sembra risolvere il problema:

ggplot(mtcars, aes(hp, qsec)) + stat_smooth(aes(group = cyl, 
    colour = factor(cyl)), 
    method = "glm", 
    formula = y ~ ns(x, 1), 
    level = 1e-9, 
    size = I(1), 
    se = FALSE) + 
    theme(panel.background=element_rect(fill="transparent",colour=NA), 
     plot.background=element_rect(fill="transparent",colour=NA), 
     legend.key = element_rect(fill = "transparent", colour = "transparent")) 

enter image description here

Problemi correlati