2016-02-12 67 views
0

我意識到類似的問題已經被問到。例如,請考慮這裏的一個:Equivalent of curve() for ggplot。是否有可能以某種方式使用group來繪製下面的函數,或者我將不得不爲ab的每個實例編寫stat_functionggplot曲線()的靈活等價

myfun <- function(x, i) { 
    sin(a[i] * x) + log(b[i] * x) 
} 

ggplot(data.frame(x=c(0, 10)), aes(x)) + 
    stat_function(fun = myfun(x, 1)) + 
    stat_function(fun = myfun(x, 2)) ... 

如果ab是大嗎?以上看起來不雅。

回答

4

我不會用stat_function任何東西不平凡的,它通常更容易明確地創造價值,

myfun <- function(a, b, x) { 
    data.frame(x = x, y = sin(a * x) + log(b * x)) 
} 

ab <- expand.grid(a=1:3, b=2:6) 
d <- plyr::mdply(ab, myfun, x=seq(0,10, length=100)) 

ggplot(d, aes(x, y, colour=factor(a))) + 
    facet_wrap(~b) + 
    geom_line() 

enter image description here