[英]Plot function line on scatter plot R
我有一个功能
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)? 还是我必须制作一个代表功能的数据框...似乎有点被黑了。
绘制函数时,可以使用lines
或curve
。
出现错误是因为lines
需要向量(或矩阵)参数(错误消息中的类型为“ double”),并且您正在向其提供函数(类型为“ closure”)。
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
将创建一个新图。
产生下图:
也许abline()
帮助。 因为它只是在绘图中添加一条线。 在您的情况下,如果我没有记错的话,它应该是这样的:
abline(a=0, b=2)
正如评论中其他人提到的那样,lines()带有两个参数,这两个都是值。 您正在发送eq,一个函数和y(即NULL)。 您得到的错误是因为NULL不会转换为双精度。
您可以尝试类似
x <- per_class$input_kb
line(x, eq(x))
或者简单地
line(per_class$input_kb, eq(per_class$input_kb))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.