尝试在ggplot中使用stat_function时收到错误

时间:2018-08-29 15:05:09

标签: r ggplot2

所以我的示例数据是:

x <- runif(1000, min = 0, max = 5)
y <- (2 / pi) * atan(x)
z <- floor(x)
df <- data.frame(x, y, z)

我绘制了x的箱形图,并由z合并:

library(ggplot2)
g <- ggplot(df, aes(x = x, y = y, group = z)) + 
  geom_boxplot()
g

enter image description here

但是事实是,在我的实际数据中,我不确定y值是否遵循(2 / pi) * atan(x)。那里有一个随机元素。因此,如何在图形上方绘制函数以自己查看?根据ggplot2文档,我尝试过...

g + stat_function(fun = (2 / pi) * atan(x), colour = "red")

...但是收到错误Warning message: Computation failed in 'stat_function()': 'what' must be a function or character string

3 个答案:

答案 0 :(得分:3)

错误提示:

'what' must be a function or character string

所以它要求您简单地定义函数。

您需要将函数定义为func

func<-function(x){  (2 / pi) * atan(x)}

然后在ggplot中调用它

library(ggplot2)
g <- ggplot(df, aes(x = x, y = y, group = z)) + 
  geom_boxplot()
g+stat_function(fun = func, colour = "red")

这是结果

enter image description here

答案 1 :(得分:2)

参数fun必须是一个函数

g + stat_function(fun = function(x){(2 / pi) * atan(x)}, colour = "red")

答案 2 :(得分:2)

我可以通过简单地定义一个新函数并将其传递为stat_function的参数来解决您的问题

在这里

myfun <- function(x){(2 / pi) * atan(x)}

然后

g + stat_function(fun = myfun colour = "red")

会做