Per pannello smoothing in ggplot2
Domanda
Sto tracciando un gruppo di curve, utilizzando sfaccettatura in ggplot2. Mi piacerebbe avere un più agevole applicato a trame dove ci sono abbastanza punti per lisciare, ma non su trame con pochissimi punti. In particolare mi piacerebbe smettere di trama in mancanza, quando uno dei pannelli ha solo 1 o 2 punti.
Esempio:
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 )
Soluzione
Prova questo
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 )
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow