ggplot

时间:2016-02-12 02:21:05

标签: r ggplot2

我已经意识到已经提出了类似的问题。例如,考虑一下:Equivalent of curve() for ggplot。是否可以使用group以某种方式绘制下面的函数,或者我是否必须为stat_functiona的每个实例编写b

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很大,该怎么办?以上似乎不够优雅。

1 个答案:

答案 0 :(得分: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