Гистограмма в JavaScript?

У меня есть этот набор данных для доход:

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 ответов


существующие примеры гистограмм основаны на вычисления гистограммы из образцов, скажем, если у вас есть список людей и их доходы. В этом случае, у вас уже есть данные для гистограммы-вы просто хотите, чтобы отобразить его.

хитрость здесь в том, что ваша гистограмма имеет ячейки переменной ширины. Первое, что вы можете сделать, это игнорировать переменную ширину каждого ящика и просто отображать простую диаграмму леденца. The x-ось является линейной шкала для дохода, и y-ось представляет собой линейную шкалу для подсчета людей:

http://bl.ocks.org/1624656

Если вы хотите преобразовать это в гистограмму, вы не можете просто заменить эти линии фиксированной ширины барами переменной ширины; вам нужно нормализовать данные так, чтобы площадью бара кодирует частоту людей с этим доходом. Таким образом, ширина полосы диапазон доходов (например, от 0 до 8,8 для первого ящик), и высота адвокатского сословия количество людей разделенное шириной. В результате площадь (ширина × высота) пропорциональна количеству людей. Это выглядит так:

http://bl.ocks.org/1624660


Если вы просто хотите или вам нужно отсортировать данные в бункеры, без построения графика взгляните на гистограмма.js.