2009-11-06 6 views
0

ggplot2에서 패싯을 사용하여 커브 그룹을 플로팅합니다. 나는 매끄럽게하는 점이 충분하지만 매우 적은 점을 가진 플롯에는 적용하지 않는 플롯에 더 부드럽게 적용하고 싶습니다. 특히, 패널 중 하나에 1 ~ 2 점만있는 경우 실패한 줄을 멈추고 싶습니다.ggplot2의 패널 당 매끄럽게하기

예 :

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) 
+1

당신이 밖으로 아직이 질문을 확인해 봤어 시도? http://stackoverflow.com/questions/1570379/adding-statsmooth-in-to-only-1-facet-in-ggplot2 –

+0

예. 패싯의 데이터 집합을 부드럽게 처리하는 것은 쉽지 않습니다. 패싯 중 어느 데이터가 충분한 데이터인지 파악한 다음 원래 데이터에서 패싯을 부분 집합으로 나누어야합니다. 부드러운 색조를 전혀 사용하지 않으려 고 시도하면서 색상이 적용되지 않습니다. –

+0

작은 재현 가능한 예를 제공하십시오. – hadley

답변

4

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) 
+0

좋아요! 전에 ddply를 사용하지 않았거나 기하학에 다른 데이터를 보냈습니다. 그것은 가능성의 전 세계를 열어줍니다. 감사! –