2015-05-20 19 views
5

Tôi cần vẽ biểu đồ trọng số của mật độ thay vì tần số. Tôi biết rằng freq = FALSE có sẵn trong hist() nhưng bạn không thể chỉ định trọng số. Trong ggplot2 Tôi có thể làm điều này:Biểu đồ có trọng số trong 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() 

Nhưng đâu tương đương với freq = FALSE?

+0

@ALexA. ho sau đó tôi sẽ đặt fre = F và không null là mặc định trong lịch sử() – heinheo

+0

Có thể trùng lặp của [Tạo biểu đồ cho các giá trị trọng số] (https://stackoverflow.com/questions/19841204/create-a-histogram -cho-trọng số-giá trị) –

Trả lời

3

Theo mặc định, geom_histogram() sẽ sử dụng tần suất thay vì mật độ trên trục y. Tuy nhiên, bạn có thể thay đổi điều này bằng cách thiết lập y thẩm mỹ của bạn để ..density.. như vậy:

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

này sẽ tạo ra một biểu đồ trọng số của v với mật độ trên trục y.

weighted_density_histogram

Bạn cũng có thể làm điều này với freq luận trong weighted.hist() từ gói plotrix:

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

plotrix

Các vấn đề liên quan