我有一个具有特定系数的data.frame。出于MWE的目的,
DF <- data.frame(a = rnorm(100), b = rnorm(100))
我想在指定的y = a*x + b
间隔内为a
和b
的每个值绘制等式x
。函数stat_function
接近我想要的,但它似乎不接受具有不同参数的函数。
我感谢我可以沿着间隔创建足够精细的序列,然后将数据帧连接到序列,然后使用mutate
手动获取y
。但是,我很好奇是否有更直接的方法。
更一般地说,给定一个带有参数data.frame的函数f(x; a1, a2, ..., an) : \R \to \R
,我们怎样才能让ggplot在x区间内为每一行参数绘制一条线?
答案 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))