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

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

7 голосов
/ 19 ноября 2011

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

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 ]

21 голосов
/ 17 января 2012

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

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

http://bl.ocks.org/1624656

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

http://bl.ocks.org/1624660

0 голосов
/ 06 сентября 2013

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

...