[英]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.