2010-10-08 70 views
4

我正在尋找ggplot的方式來繪製概率密度函數(或任何函數)。我曾經使用R中的舊plot()函數來完成此操作。例如,繪製與alpha=1beta=1(統一)β分佈:如何使用ggplot繪製概率密度?

x <- seq(0,1,length=100) 
db <- dbeta(x, 1, 1) 
plot(x, db, type='l') 

我怎樣才能做到這一點在ggplot?

回答

6
library(ggplot2) 
x <- seq(0,1,length=100) 
db <- dbeta(x, 1, 1) 

可以使用qplot功能GGPLOT2內做出迅速情節

qplot(x, db, geom="line") 

,或者你可以將geom_line層到ggplot添加

ggplot() + geom_line(aes(x,db)) 
+1

您的意思是'要求(GGPLOT2)'或'庫(GGPLOT2)'在你的答案的第一行:下面是類似於您與curve(dbeta(x, shape1 = 2, shape2 = 2), col = "red")得到了什麼? – 2010-10-08 20:26:42

6

GGPLOT2有stat_function()功能以與curve()相同的方式在圖上疊加功能。在我意識到如何使用由統計生成的變量---在這裏..y..之前,我掙扎了一點點,以使其無需生成數據。

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