我有一个功能
eq = function(x){x*2}
我将在R。
的散点图上划线我的尝试如下(尚未发布数据,因此不可运行, 但在句法上是等价的):
plot(per_class$input_kb, per_class$kb, col="red", ylab="Peak memory usage (kb)",
xlab="Input data (kb)", main="Peak memory per input size")
哪个给我情节。 然后我尝试
lines(eq,y=NULL)
然而,我收到错误。
Error in as.double(y) :
cannot coerce type 'closure' to vector of type 'double'
有没有办法在R中的plot
上绘制函数(理想情况下没有ggplot2)?
或者我必须制作一个代表该功能的数据框...似乎有点被黑了。
答案 0 :(得分:1)
在绘制函数时,您可以使用lines
或使用curve
。
错误正在发生,因为lines
需要向量(或矩阵)参数(在错误消息中键入' double')并且您正在为它提供一个函数(类型' closure&# 39。)
curve
函数用于直接绘制函数,因此可能更为可取。下面是绘制两个估计一组点的函数的示例。
# get sample data
set.seed(1234)
x <- 1:20
y <- x^2 + 0.5 * x + 1 + rnorm(20)
y.est1 <- function(x) 1.1 * x^2 + 0.55 * x - 1
y.est2 <- function(x) .9 * x^2 + 0.45 * x + 2
# scatter plot
plot(x, y)
使用lines
以红色绘制第一个估算值。
lines(x, y.est1(x), col="red")
使用curve
以蓝色绘制第二个估算值。
curve(y.est2, from=min(x), to=max(x), col="blue", add=TRUE)
对于curve
,您需要包含add = TRUE参数,否则curve
将创建一个新图。
这产生了下图:
答案 1 :(得分:0)
也许abline()
有帮助。
因为它只是在绘图中添加一条线。
在你的情况下,如果我没有错,它应该是这样的:
abline(a=0, b=2)
答案 2 :(得分:0)
正如评论中提到的其他人一样,lines()接受两个参数,两个参数都是值。您正在发送eq,函数和y,它是NULL。您得到的错误是因为NULL不会转换为double。
您可以尝试类似
的内容x <- per_class$input_kb
line(x, eq(x))
或者只是
line(per_class$input_kb, eq(per_class$input_kb))