Skip to content

Instantly share code, notes, and snippets.

@chelm
Created April 4, 2011 17:36
Show Gist options
  • Save chelm/902039 to your computer and use it in GitHub Desktop.
Save chelm/902039 to your computer and use it in GitHub Desktop.
calculateBreaks: function( features, mean, stdev ){
var self = this
var type = self.options[self.class_type].classificationType;
var range = self.options[self.class_type].range;
var n = self.options[self.class_type].categories;
var data_range = range[1] - range[0];
switch (type){
case 'Quantile':
var values = features.sort(function(a, b) {return a - b});
var breaks = pv.range(n).map(function(i) { return values[Math.floor(i * (values.length - 1) / n)]});
breaks[n] = range[1];
break;
case 'Equal Interval':
var breaks = pv.range(n).map(function(i) {return (range[0] + i * data_range / n)});
breaks[n] = range[1] + data_range / 1000;
break;
case 'St Dev':
var breaks = pv.range(n).map(function(i) {return (mean - stdev * (n / 2 - i)) });
breaks[n] = range[1] + data_range / 1000;
break;
case 'Max Breaks':
var difArray = [];
for (var i=0; i< features.length-1; i++){
dif = features[i + 1] - features[i];
midPoint = dif / 2 + features[i];
difArray.push({ 'midPoint': midPoint, 'dif': dif });
}
difArray.sort(function(a, b) {return a.dif - b.dif});
var breaks = pv.range(n-1).map(function(i) {return difArray[i]['midPoint']});
breaks.sort();
breaks.unshift(range[0]);
breaks[n] = range[1] + data_range / 1000;
break;
}
self.breaks = breaks;
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment