8

我有这个收入数据集:

收入 人数
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 个代表数据的符号,我如何决定放置它们的位置?
4

2 回答 2

21

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

这里的棘手之处在于您的直方图具有可变宽度的 bin。您可以做的第一件事是忽略每个 bin 的可变宽度,只显示一个简单的棒棒糖图表。x轴是收入的线性比例,y是人数的线性比例:

http://bl.ocks.org/1624656

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

http://bl.ocks.org/1624660

于 2012-01-17T04:56:38.390 回答
1

如果您只想或需要将数据分类到 bin 中,而无需绘图,请查看histogram.js

于 2013-09-05T21:26:51.927 回答