簡體   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