Гистограмма в JavaScript?
У меня есть этот набор данных для дохода:
Доход Количество человек 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
(Как видите, ширина между уровнями доходов к концу увеличивается.)
- Как мне составить точную гистограмму этих данных в JavaScript? (По линейной шкале оси X с диапазоном, например, от 0 до 2000)
- Как определить количество людей, показывающих только проценты с разными интервалами?
- Если я хочу разместить ровно 100 символов, представляющих данные, как мне решить, где их разместить?
2 ответа
Существующие примеры гистограмм основаны на вычислении гистограммы из выборок, скажем, если у вас был список отдельных людей и их доходов. В этом случае у вас уже есть данные для гистограммы - вы просто хотите отобразить их.
Сложность в том, что ваша гистограмма имеет ячейки переменной ширины. Первое, что вы можете сделать, это игнорировать переменную ширину каждой корзины и просто отобразить простую диаграмму леденцов. Ось X- это линейная шкала дохода, а ось Y- линейная шкала количества людей:
Если вы хотите преобразовать это в гистограмму, вы не можете просто заменить эти строки фиксированной ширины полосами переменной ширины; вам нужно нормализовать данные так, чтобы область бара кодировала частоту людей с таким доходом. Следовательно, ширина бара - это диапазон дохода (например, от 0 до 8,8 для первого контейнера), а высота бара - это количество людей, деленное на ширину. В результате площадь (ширина × высота) пропорциональна количеству людей. Это выглядит так:
Если вы просто хотите или вам нужно отсортировать данные в бункеры, без печати посмотрите на histogram.js.