2016-09-12 67 views
0

我已閱讀stat_function上的這些內容,但仍無法使其工作。下面是min工作代碼:R stat_function與替代數據集

plotdata <- cbind(as.data.frame(seq(-5, 5, length=10)), as.data.frame(-seq(-5, 5, length=10))) 
colnames(plotdata) <- c('x', 'y') 

xvalues <- as.data.frame(seq(-5, 5, length = 100)) 
colnames(xvalues) <- 'x' 

xey <- function(x) {x} 

#ggplot(plotdata, aes(x, y)) + geom_line() + stat_function(data=xvalues, fun = xey, linetype = 2) 

ggplot(plotdata, aes(x, y)) + geom_line() + stat_function(mapping = aes(x = x), data=xvalues, fun = xey, linetype = 2) 

我得到的錯誤是:

Error in eval(expr, envir, enclos) : object 'y' not found 

正如你所看到的,我都與映射和不和的錯誤是一樣的嘗試。該情節沒有stat_function的作品,xey函數被矢量化並且用x來表示,並且xvalues列被標記爲x,所以?

編輯 - 在xvalues中添加了命名列,沒有從我的筆記本中轉移。

回答

0

這不是一個stat_function問題。您沒有一個名爲y的列,您將該數據集傳遞給ggplot函數。更改data參數值可修復此問題。

ggplot(plotdata, aes(x, y)) + geom_line() + stat_function(mapping = aes(x = x), data=plotdata, fun = xey, linetype = 2) 
+0

Thanks Rilcon!啊,把最小的工作例子放在一起是一個問題。請設想一下,xvalues與plotdata中的值不同。我希望stat_function繪製在不同的數據集上,只包含x值,而不是plotdata。非常感謝您關注我的問題。 – zazizoma

+1

'stat_function'的輸入必須是一個公式或'x,y'對,它看起來像只傳遞了'x'值。 – Rilcon42

+0

x = x來自文檔中stat_plots的示例,它不使用y。但我在映射中嘗試了x = x,y = 0,它工作正常! – zazizoma