2010-08-11 77 views
4

說,我在ggplot2中使用facet_grid()來獲得2個直方圖。現在我想將這些直方圖與泊松曲線(對於2個直方圖/網格具有不同平均值)和另一個分佈的第二條曲線(爲此我想手動提供值的概率函數)疊加。如何才能做到這一點?如何在使用ggplot2和格子的直方圖上疊加分佈曲線

構建一個例子:

library(ggplot2) 

value<-c(rpois(500,1.5)) 

group<-rep(c("A","B"),250) 

data<-data.frame(value,group) 

g1<-ggplot(data,aes(value)) 

g1+geom_histogram(aes(y=..count..),binwidth=1,position="identity")+facet_grid(.~group) 

下一步是什麼?

另外,它可以使用晶格包嗎?

回答

6

最簡單的方法是畫出密度,而不是數量和使用stat_function()

library(ggplot2) 
value<-c(rpois(500,1.5)) 
group<-rep(c("A","B"),250) 
data<-data.frame(value,group) 
ggplot(data,aes(value)) + 
     geom_histogram(aes(y=..density..), binwidth=1,position="identity") + 
     facet_grid(.~group) + 
     stat_function(geom = "line", fun = dpois, arg = list(lambda = 1.5), colour = "red", fill = NA, n = 9) 

如果你想計數,那麼你需要dpois的密度轉換爲「計數」

ggplot(data,aes(value)) + 
     geom_histogram(aes(y=..count..), binwidth=1,position="identity") + 
     facet_grid(.~group) + 
     stat_function(geom = "line", fun = function(..., total){dpois(...) * total}, arg = list(lambda = 1.5, total = 250), colour = "red", fill = NA, n = 9) 
相關問題