散点图R

时间:2016-09-07 11:23:23

标签: r plot

我有一个功能

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

3 个答案:

答案 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将创建一个新图。

这产生了下图:

enter image description here

答案 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))