Adicionando stat_smooth em apenas 1 faceta em ggplot2
Pergunta
Eu tenho alguns dados para os quais, em um nível de fator, há uma correlação significativa. No outro nível, não há nenhum. Plotar esses lado a lado é simples. Adicionando uma linha a ambos com stat_smooth, também direto. No entanto, não quero que a linha ou seu preenchimento seja exibido em uma das duas facetas. Existe uma maneira simples de fazer isso? Talvez especificar uma cor em branco para o preenchimento e a cor de uma das linhas de alguma forma?
Solução
Não pense em escolher uma faceta, pense em fornecer um subconjunto de seus dados para stat_smooth:
ggplot(df, aes(x, y)) +
geom_point() +
geom_smooth(data = subset(df, z =="a")) +
facet_wrap(~ z)
Outras dicas
Claro, mais tarde respondi minha própria pergunta. Embora exista uma maneira menos hack-y de fazer isso? Gostaria de saber se alguém poderia se ajustar a funções diferentes em painéis diferentes.
Uma técnica é usar + scale_fill_manual e scale_colour_manual. Eles permitem especificar quais cores serão usadas. Então, neste caso, digamos que você tenha
a<-qplot(x, y, facets=~z)+stat_smooth(method="lm", aes(colour=z, fill=z))
Você pode especificar cores para o preenchimento e a cor usando o seguinte. Observe que a segunda cor é clara, pois está usando um valor hexadecimal com os dois números finais representando transparência. Então, 00 = claro.
a+stat_fill_manual(values=c("grey", "#11111100"))+scale_colour_manual(values=c("blue", "#11111100"))