2015-05-20 21 views
5

Ağırlıktan ziyade ağırlıklı bir histogram grafiğini çizmem gerekiyor. freq = FALSE'un hist() sürümünde olduğunu biliyorum ancak ağırlıkları belirleyemezsiniz.Histogram ağırlıkta 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() 

Ama nerede freq = FALSE eşdeğerdir: ggplot2 ben bunu yapabilir mi?

+0

@ALexA. ho sonra fre = F ayarını ve hist (default) olan null değerini() – heinheo

+0

yapabilir miyim? [Ağırlıklı değerler için histogram oluştur] 'nın olası kopyası (https://stackoverflow.com/questions/19841204/create-a-histogram -için ağırlıklı değerleri) –

cevap

3

Varsayılan olarak, geom_histogram(), y eksenindeki yoğunluktan ziyade frekans kullanır. Ancak, şöyle ..density.. için y estetiğini ayarlayarak bunu değiştirebilirsiniz:

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

Bu y ekseninde yoğunluğu ile v ağırlıklı histogram üretecek.

weighted_density_histogram

Ayrıca plotrix paketinden weighted.hist() yılında freq argümanı ile yapabilirsiniz:

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

plotrix