繁体   English   中英

在散点图R上绘制功能线

[英]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)? 还是我必须制作一个代表功能的数据框...似乎有点被黑了。

绘制函数时,可以使用linescurve

出现错误是因为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM