Por painel suavização no ggplot2
Pergunta
Eu estou traçando um grupo de curvas, utilizando faceta em ggplot2. Eu gostaria de ter um suave aplicado aos lotes onde existem pontos suficientes para suavizar, mas não em parcelas com muito poucos pontos. Em particular, eu gostaria de parar o enredo falha quando um dos painéis tem apenas 1 ou 2 pontos.
Exemplo:
a <- data.frame( x=1:100, y=sin(seq(0.1,10,0.1) ))
b <- data.frame( x=1:5, y=sin(seq(0.1,0.2,0.1) ))
l <- melt(list(a=a,b=b),id.vars="x")
qplot( x, value, data=l ) + geom_smooth() + facet_wrap( ~ L1 )
Solução
Tente este
library(ggplot2)
a <- data.frame( x=1:100, y=sin(seq(0.1,10,0.1) ))
b <- data.frame( x=1:2, y=sin(seq(0.1,0.2, length = 2) ))
l <- melt(list(a=a,b=b),id.vars="x")
more_than <- function(n) {
function(df) {
if (nrow(df) > n) {
df
}
}
}
lbig <- ddply(l, "L1", more_than(5))
qplot( x, value, data=l ) + geom_smooth() + facet_wrap( ~ L1 )
qplot( x, value, data=l ) + geom_smooth(data = lbig) + facet_wrap( ~ L1 )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow