如何在 ggplot2 中绘制 Gamma 分布
How to plot a Gamma distribution in ggplot2
我在 R 中有一个图,我正试图在 ggplot2 中复制它。我有以下代码:
theta = seq(0,1,length=500)
post <- dgamma(theta,0.5, 1)
plot(theta, post, type = "l", xlab = expression(theta), ylab="density", lty=1, lwd=3)
我试图在 ggplot2 中复制这个图,这是我能得到的最接近的图。
df=data_frame(post,theta)
ggplot(data=df,aes(x=theta))+
stat_function(fun=dgamma, args=list(shape=1, scale=.5))
您没有正确匹配您的参数。 dgamma
的签名是
dgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE)
所以当你打电话给
dgamma(theta, 0.5, 1)
那是
dgamma(theta, shape=0.5, rate=1)
这意味着您会将 ggplot
翻译为
ggplot(data=df,aes(x=theta))+
stat_function(fun=dgamma, args=list(shape=0.5, rate=1))
如果你喜欢 scale_y_continuous(limits=c(0,12))
或类似的东西,你也可以调整 y 限制。
我在 R 中有一个图,我正试图在 ggplot2 中复制它。我有以下代码:
theta = seq(0,1,length=500)
post <- dgamma(theta,0.5, 1)
plot(theta, post, type = "l", xlab = expression(theta), ylab="density", lty=1, lwd=3)
我试图在 ggplot2 中复制这个图,这是我能得到的最接近的图。
df=data_frame(post,theta)
ggplot(data=df,aes(x=theta))+
stat_function(fun=dgamma, args=list(shape=1, scale=.5))
您没有正确匹配您的参数。 dgamma
的签名是
dgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE)
所以当你打电话给
dgamma(theta, 0.5, 1)
那是
dgamma(theta, shape=0.5, rate=1)
这意味着您会将 ggplot
翻译为
ggplot(data=df,aes(x=theta))+
stat_function(fun=dgamma, args=list(shape=0.5, rate=1))
如果你喜欢 scale_y_continuous(limits=c(0,12))
或类似的东西,你也可以调整 y 限制。