2015-05-20 69 views
5

我需要繪製密度而非頻率的加權直方圖。我知道freq = FALSE可用於hist(),但您無法指定權重。在ggplot2我可以這樣做:帶權重的直方圖R

library(ggplot2) 
w <- seq(1,1000) 
w <-w/sum(w) 
v <- sort(runif(1000)) 

foo <- data.frame(v, w) 

ggplot(foo, aes(v, weight = w)) + geom_histogram() 

但是哪裏是freq = FALSE等價?

+0

@ALexA。然後我會設置fre = F,而不是null,這是默認的hist() – heinheo

+0

可能重複[爲加權值創建直方圖](https://stackoverflow.com/questions/19841204/create-a-histogram - 用於加權值) –

回答

3

默認情況下,geom_histogram()將在y軸上使用頻率而不是密度。但是,您可以像這樣通過設置y審美更改爲..density..

ggplot(foo, aes(x = v, y = ..density.., weight = w)) + geom_histogram() 

這將產生的v加權直方圖與y軸密度。

weighted_density_histogram

您也可以從plotrixweighted.hist()freq參數做到這一點:

library(plotrix) 
with(foo, weighted.hist(v, w, freq = FALSE)) 

plotrix