我想將此函數曲線添加到直方圖。單獨地,他們工作。但是,當我嘗試將它們放在同一個圖上時,函數會混淆......我似乎無法弄清楚如何將它們放在一起。R ggplot2將函數添加到直方圖
# 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, β= 0.5,γ= 0.5)(β-α)/((x +β)^(α+ 1)*γ(α)) }。 (我重命名了數據'cc',因爲'c'已經是最常用函數的名字了)。通過這些更改使其運行,圖表看起來很好。如果仍有問題,請編輯代碼,以便可以複製問題。目前我投票結束爲「錯字/不可重現」。 – Gregor
我的猜測是,你改變了一個(至少)你定義的'alpha','beta'或'gamma'的地方。這就是爲什麼將函數參數作爲參數對待而不是讓他們在全球環境中尋找值的良好習慣。 – Gregor