Гистограмма в 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 символов, представляющих данные, как мне решить, где их разместить?

person dani    schedule 19.11.2011    source источник
comment
что-то вроде этого? mbostock.github.com/protovis/ex/histogram.html   -  person Book Of Zeus    schedule 19.11.2011
comment
Да, но библиотека Bostock D3 лучше: github.com/mbostock/d3/wiki/ Histogram-Layout Буду признателен за код/псевдокод для моих 3 вопросов.   -  person dani    schedule 19.11.2011
comment
как это? mbostock.github.com/d3/ex/population.html   -  person Book Of Zeus    schedule 19.11.2011
comment
Нет, это не бинирует никакие данные...   -  person dani    schedule 19.11.2011
comment
ни в одном из примеров нет того, что вам нужно?   -  person Book Of Zeus    schedule 19.11.2011
comment
У этого может быть: github.com/mbostock/d3/wiki/Histogram-Layout ... Но я не могу понять, как использовать его с данным набором данных и как ответить на вопросы q2) и q3).   -  person dani    schedule 19.11.2011
comment
Я немного смущен здесь. Ваши данные уже объединены в диапазоны доходов, верно? Итак, как/почему вы хотите снова его убрать? И как у вас может быть 100 символов (столбцов в гистограмме, верно?), если у вас всего 26 точек данных?   -  person nrabinowitz    schedule 23.11.2011


Ответы (2)


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

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

http://bl.ocks.org/1624656

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

http://bl.ocks.org/1624660

person mbostock    schedule 17.01.2012

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

person Eoin Murray    schedule 05.09.2013