JavaScript中的直方图?

时间:2011-11-19 17:23:28

标签: javascript statistics d3.js jstat

我有这个收入数据集:

Income      Number of people
0           245981
8.8         150444
30          126063
49.9        123519
70          115029
90.7        277149
109.1       355768
130         324246
150.3       353239
170.2       396008
190         396725
210         398640
230.1       401932
250         416079
270         412727
289.8       385192
309.7       343178
329.7       293707
349.6       239982
369.7       201557
389.3       165132
442.3       442075
543.4       196526
679.9       146784
883.9       48600
1555        44644

(如您所见,收入水平之间的宽度在结束时变得更大。)

  1. 如何在JavaScript中对这些数据进行准确的直方图? (上 线性x轴刻度,范围从例如0-2000)
  2. 如何计算仅显示百分比的人数 不同的间隔?
  3. 如果我想放置100个代表数据的符号,那么如何 我决定把它们放在哪里?

2 个答案:

答案 0 :(得分:21)

现有的直方图示例基于样本中的computing the histogram,例如,如果您有个人及其收入的列表。在这种情况下,您已经拥有直方图的数据 - 您只想显示它。

这里棘手的是你的直方图有可变宽度的分档。您可以做的第一件事是忽略每个bin的可变宽度,只显示一个简单的棒棒糖图表。 x -axis是收入的线性标度, y -axis是人数的线性标度:

http://bl.ocks.org/1624656

如果要将其转换为直方图,则不能仅使用可变宽度条替换那些固定宽度的线;您需要规范化数据,以便条形图的区域编码具有该收入的人的频率。因此,条形的宽度是收入范围(例如第一个区域的0到8.8),条形的高度是人的数量除以宽度。结果,面积(宽度×高度)与人数成比例。看起来像这样:

http://bl.ocks.org/1624660

答案 1 :(得分:0)

如果您只是想要或需要将数据分类到分档中,而不进行绘图,请查看histogram.js