【发布时间】:2017-08-17 20:24:10
【问题描述】:
我正在尝试将此函数曲线添加到直方图中。单独地,他们工作。但是当我尝试将它们放在同一张图上时,函数就搞砸了……我似乎无法弄清楚如何将它们放在一起。
# make dataframe for ggplot (can use random numbers from 0 to 10 to simulate x)
c= data.frame(x= x, cx= c(seq(from= 0.001, to= 10, by= 0.001)))
x 和 cx 具有相同数量的数据点。
# function for curve (alpha and beta are just constants set at 0.5)
fx= function(x){
(beta^alpha)/((x+beta)^(alpha+1)*gamma(alpha))
}
当 geom_histogram 或 stat_function 被注释掉时,图表可以正常工作。
# graph code
h_x= ggplot(data= NULL) +
geom_histogram(data= c, aes(x= x, y= ..density..), binwidth= 0.2, col= "purple", fill= "yellow") +
stat_function(fun= fx, data= c, aes(x= cx)) +
coord_cartesian(xlim= c(0:10)) +
labs(title= "Figure 03", x= "x")
plot(h_x)
曲线本身
;
直方图和曲线在一起
【问题讨论】:
-
为了让您的示例工作,我使用了
set.seed(47); cc = data.frame(x= runif(10000, 0, 10), cx = c(seq(from= 0.001, to= 10, by= 0.001)))和fx = function(x, alpha = 0.5, beta = 0.5, gamma = 0.5){ (beta^alpha)/((x+beta)^(alpha+1)*gamma(alpha)) }。 (我将数据重命名为cc,因为c已经是最常用函数的名称了)。通过这些更改使其运行,图表看起来很好。如果仍有问题,请编辑代码以便重现问题。现在我投票以“拼写错误/不可重现”结束。 -
我的猜测是,您在某个地方(至少)更改了
alpha、beta或gamma的定义之一。这就是为什么将函数参数视为参数而不是让它们在全局环境中寻找值是一种很好的做法的原因。
标签: r ggplot2 statistics