为加权值创建直方图

sds*_*sds 15 plot r histogram weighted-graph

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

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

如何绘制新的直方图?(它应该看起来更像是y=x这个例子中的线).

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

Jak*_*ead 29

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

foo <- data.frame(v, w)

ggplot(foo, aes(v, weight = w)) + geom_histogram()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 它在 [`geom_histogram`](https://ggplot2.tidyverse.org/reference/geom_histogram.html#examples) 的示例中使用。不知道五年多前我是怎么知道的 (3认同)
  • 这是太棒了; 制作加权直方图如此简单 - 而且有效!但“权重”并未在文档(ggplot 3.1.1)中列出作为 geom_histogram(...) 的美学。你是怎么知道的? (2认同)

mus*_*_ut 13

plotrix有一个功能weighted.hist,你可以做你想要的:

w<-seq(1,1000)
v<-sort(runif(1000))
weighted.hist(v, w)
Run Code Online (Sandbox Code Playgroud)

<code> weighted.hist </ code>的示例

  • 仅供参考,链接已失效。这是有关包的信息http://cran.r-project.org/web/packages/plotrix/index.html (2认同)

dpe*_*pel 5

weights包装的替代品是wtd.hist()

w<-seq(1,1000) v<-sort(runif(1000)) wtd.hist(x=v,weight=w) 在此输入图像描述