Im Erstellen eines Histogramm-Algorithmus. Ich folge der angebotenen Lösung here.Einfacher Histogramm-Algorithmus in Javascript
Ich möchte einfach zählen, wie oft jeder Wert aufgetreten ist.
Allerdings kann ich den Algorithmus nicht richtig bekommen. Mein Code ist:
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);
Wenn man sich die Konsolenprotokolle suchen, werden Sie sehen:
to_plot is [1, 2, 1, 0, 0, NaN]
Ich möchte, dass im letzten Index "1" sein. Aber das Problem ist, dass Werte den Maximalwert schließen, bin_idx
ist außerhalb des Bereichs. Wie kann ich das optimieren, damit ich die folgenden Ergebnisse bekomme?
to_plot is [1, 2, 1, 0, 1]
Die jsfiddle ist here.
Fantastische Lösung. Das funktioniert sehr gut. Es sieht so aus, als müsste ich eine logarithmische Skala verwenden, da einige Werte viel zu groß sind. Das funktioniert also sehr gut, da ich mit Schwimmern arbeite. Vielen Dank! – Mark