所以我的示例数据是:
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
但是事实是,在我的实际数据中,我不确定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
。
答案 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")
这是结果
答案 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")
会做