给定参数的数据框,用这些参数绘制单变量函数

时间:2015-02-17 01:45:26

标签: r ggplot2

我有一个具有特定系数的data.frame。出于MWE的目的,

DF <- data.frame(a = rnorm(100), b = rnorm(100))

我想在指定的y = a*x + b间隔内为ab的每个值绘制等式x。函数stat_function接近我想要的,但它似乎不接受具有不同参数的函数。

我感谢我可以沿着间隔创建足够精细的序列,然后将数据帧连接到序列,然后使用mutate手动获取y。但是,我很好奇是否有更直接的方法。

更一般地说,给定一个带有参数data.frame的函数f(x; a1, a2, ..., an) : \R \to \R,我们怎样才能让ggplot在x区间内为每一行参数绘制一条线?

1 个答案:

答案 0 :(得分:0)

这是我的方法:

linear_fun <- function(x, a, b) {
  a*x + b
}

stat_linear_fun <- function(x_range, a, b) 
  stat_function(data = data.frame(x = x_range), 
                mapping = aes(x),
                fun = linear_fun, 
                args = list(a = a, b = b))

plot_ab <- function(DF, x_range) {
  p <- ggplot()
  for (i in 1:nrow(DF)) {
    p <- p + stat_linear_fun(x_range, DF$a[i], DF$b[i])
  }
  p
}

DF <- data.frame(a = -2:2, b = c(0, -3, 2, -5, 6))
plot_ab(DF, c(0, 10))

enter image description here