为加权值创建直方图

时间:2013-11-07 16:24:44

标签: r plot histogram weighted-graph

如果我有一个向量(例如v<-runif(1000)),我可以绘制它的直方图(它或多或少看起来像一条水平线,因为v是来自均匀分布的样本)

但是,假设我有一个向量及其相关权重(例如w<-seq(1,1000)除了v<-sort(runif(1000)))。例如,这是table()对更大数据集的结果。

如何绘制新的直方图? (它应该看起来更像是本例中的y=x行。)

我想我可以通过使用tablerep)来反转hist(rep(v,w))的效果,但这个“解决方案”看起来很丑陋且资源丰富(创建一个大小为{{{{1}的中间向量1}}),它只支持整数权重。

3 个答案:

答案 0 :(得分:28)

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

foo <- data.frame(v, w)

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

enter image description here

答案 1 :(得分:13)

Package plotrix有一个功能weighted.hist可以满足您的需求:

w<-seq(1,1000)
v<-sort(runif(1000))
weighted.hist(v, w)

Example of <code>weighted.hist</code>

答案 2 :(得分:5)

weights包中的替代方法是wtd.hist()

w<-seq(1,1000) v<-sort(runif(1000)) wtd.hist(x=v,weight=w) enter image description here