2012-07-16 50 views
2

ggplot geom_histogramgeom_density都期望x審美,其中每個將審查其領域的變量的發生率。生成密度圖,其中域和給定的發生率

我有一個功能,輸出兩個某些分佈的域和發生率(即沒有以可數形式呈現事件,而是以已經計數的形式)。

實際值集來自外部庫,因此將在此處設置示例。我想繪製這樣的分佈:

data <- data.frame(depth=seq(0,20), incidence=seq(0,20)^1.5) 
ggplot() + geom_density (aes(x=depth, y=incidence), data=data, fill='lightblue') 

上述不起作用。當然,我可以自己使用x =深度或x =發生率並生成一個圖,但是,兩者都不會是正確的,因爲x變量被認爲是我們正在計數事件的變量。

它發生在我身上,可能需要數據幀併爲每個深度生成行,其中#行對應於發生率#。隨着分數發生率這變得更加複雜,但可以縮放。

問題:有沒有一種方法可以在ggplot中生成密度圖,而不是事件?如果不是,我猜可以使用類似的東西:

c (apply (data, 1, function(r) rep(r[1], r[2])), recursive=TRUE) 

生成事件的離散近似值。 ggplot中的直接方式會更好。

+0

我可能缺少一些東西,但爲什麼不能用'geom_line()'進行繪圖呢? – Andrie 2012-07-16 14:52:02

+0

我想如果補充平滑(否則會非常鋸齒)並填充區域。我想可以爲區域填充構建矩形,但不知道如何直接在ggplot中進行平滑處理? – 2012-07-16 18:50:11

+0

爲什麼不發佈類似於您的真實數據的數據。 ggplot可以順利地爲您解決問題。 – Andrie 2012-07-16 20:36:17

回答

0

明顯的事情是

qplot(depth, data = data, weight = incidence, geom = "histogram", binwidth = 1) 

如果您需要geom_histogram這樣做,則它是稍長

ggplot(data , aes(x = depth)) + 
     geom_histogram(binwidth = 1, aes(weight = incidence)) 

生產

enter image description here