问题描述
如果我有一个向量(例如v<-runif(1000)
),则可以绘制其直方图(由于v
是均匀分布的样本,因此它或多或少看起来像一条水平线).
If I have a vector (e.g., v<-runif(1000)
), I can plot its histogram (which will look, more or less, as a horizontal line because v
is a sample from the uniform distribution).
但是,假设我有一个向量及其关联的权重(例如,除了v<-sort(runif(1000))
之外的w<-seq(1,1000)
).例如,这是table()
在更大数据集上的结果.
However, suppose I have a vector and its associated weights (e.g., w<-seq(1,1000)
in addition to v<-sort(runif(1000))
). E.g., this is the result of table()
on a much larger data set.
如何绘制新的直方图? (在此示例中,它看起来应该更像y=x
行).
How do I plot the new histogram? (it should look more of less like the y=x
line in this example).
我想我可以通过使用rep
(hist(rep(v,w))
)来反转table
的效果,但是这个解决方案"看起来很丑陋且占用大量资源(创建大小为sum(w)
的中间向量),并且仅支持整数权重.
I guess I could reverse the effects of table
by using rep
(hist(rep(v,w))
) but this "solution" seems ugly and resource-heavy (creates an intermediate vector of size sum(w)
), and it only supports integer weights.
推荐答案
软件包plotrix
具有函数weighted.hist
可以满足您的需求:
Package plotrix
has a function weighted.hist
which does what you want:
w<-seq(1,1000)
v<-sort(runif(1000))
weighted.hist(v, w)
>
这篇关于创建加权值的直方图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!