我正在寻找绘制概率密度函数(或任何函数)的ggplot方法。我曾经使用R中的旧plot()
函数来执行此操作。例如,要使用alpha=1
和beta=1
(统一)绘制beta分布:
x <- seq(0,1,length=100)
db <- dbeta(x, 1, 1)
plot(x, db, type='l')
我怎么能在ggplot中做到这一点?
答案 0 :(得分:6)
library(ggplot2)
x <- seq(0,1,length=100)
db <- dbeta(x, 1, 1)
您可以使用ggplot2中的qplot函数快速绘制
qplot(x, db, geom="line")
或者您可以将geom_line图层添加到ggplot
ggplot() + geom_line(aes(x,db))
答案 1 :(得分:6)
ggplot2有一个stat_function()
函数,可以在一个图上叠加一个函数,就像curve()
一样。在我意识到如何使用统计数据产生的变量--- ..y..
之前,我努力工作而不生成数据。以下内容与curve(dbeta(x, shape1 = 2, shape2 = 2), col = "red")
:
require(ggplot2)
x <- seq(0, 1, len = 100)
p <- qplot(x, geom = "blank")
stat <- stat_function(aes(x = x, y = ..y..), fun = dbeta, colour="red", n = 100,
args = list(shape1 = 2, shape2 = 2))
p + stat