Im создает алгоритм гистограммы. Im после предлагаемого решения here.Простой алгоритм гистограммы в Javascript
Я хочу просто подсчитать количество раз, когда произошло каждое значение.
Однако я не могу получить алгоритм правильно. Мой код:
var values = [2, 4, 6, 3, 3];
var val_max = 6;
var val_min = 2;
var num_bins = parseInt(val_max - val_min + 1);
console.log('num_bins is ', num_bins);
var bin_width = (val_max-val_min)/num_bins;
console.log('bin_width is ', bin_width);
var to_plot = [];
for (var i = 0; i < num_bins; i++) {
to_plot.push(0);
}
for (var x = 0; x < values.length; x++) {
var bin_idx = parseInt((values[x] - val_min)/bin_width);
to_plot[bin_idx] = to_plot[bin_idx] + 1;
}
console.log('to_plot is ', to_plot);
Если вы посмотрите на журналы консоли, вы увидите:
to_plot is [1, 2, 1, 0, 0, NaN]
Я хочу, чтобы последний индекс, чтобы быть «1». Но проблема в том, что значения закрывают максимальное значение, bin_idx
выходит за пределы допустимого диапазона. Как я могу настроить это, чтобы получить следующие результаты?
to_plot is [1, 2, 1, 0, 1]
Jsfiddle - here.
Фантастическое решение. Это работает очень хорошо. Похоже, мне придется использовать логарифмический масштаб, поскольку некоторые значения слишком велики. Так что это работает очень хорошо, так как плохо работать с поплавками. Благодаря! – Mark