我的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
我正在尝试修复它,但我没有找到。有人可以帮我吗?非常感谢你提前。
答案 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()