ggplot上的Stat_function不起作用

时间:2017-07-06 12:52:34

标签: r ggplot2

我的ggplot有问题,尤其是stat_function。

我想绘制我的分布,然后我想计算卡方理论分布并将其绘制在我的实际情节上。 没有ggplot,我用简单的行()

制作了这个
session_start();

现在用ggplot来实现它:

res.lk <- apply (as.matrix(baf_matrix$res.fst), 2, FUN = function (x) baf_matrix$res.fst*4 / (mean(baf_matrix$res.fst))) hist(res.lk, probability = T, breaks = 100,main = "LK distribution", xlab ="LK") x = c(0:as.integer(max(res.lk))) lines(x,dchisq(x,df=4),lwd=3,col="orange")

Y = as.data.frame(res.lk)

我收到此错误:警告消息: ggplot(data = Y , aes( x = Lk )) + geom_histogram( binwidth=.1, color="black", fill="white" ) + stat_function( fun = dchisq(c(0:as.integer(max(res.lk))),df=4), lwd = 3, col = "orange") + theme_bw()中的计算失败: 'what'必须是函数或字符串

这就是我的数据: The Lk distribution

我正在尝试修复它,但我没有找到。有人可以帮我吗?非常感谢你提前。

1 个答案:

答案 0 :(得分:1)

注意:如果您包含示例数据供我们使用,那将非常有用。

论证fun必须是一个函数。你正在传递一个矢量。此外,由于分配行仅取决于数据中的单个值,因此最好使用annotate

xseq <- seq(max(Y$res.lk))

ggplot(data = Y, aes(x = Lk)) +
  geom_histogram(binwidth = .1, color="black", fill="white") +
  annotate(
    geom = "line",
    x = xseq,
    y = dchisq(xseq, df = 4),
    width = 3,
    color = "orange"
    ) +
  theme_bw()