2010-10-08 4 views
4

Я ищу способ ggplot для построения функции плотности вероятности (или любой функции). Раньше я использовал старую функцию plot() в R, чтобы сделать это. Например, для построения распределения бета с alpha=1 и beta=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)' в первой строке ответа? –

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 
Смежные вопросы