// Generated by CoffeeScript 1.8.0 var Box_Plot, root; root = typeof exports !== "undefined" && exports !== null ? exports : this; Box_Plot = (function() { function Box_Plot(sample_list, sample_group) { this.sample_list = sample_list; this.sample_group = sample_group; this.get_samples(); this.margin = { top: 10, right: 50, bottom: 20, left: 50 }; this.plot_width = 200 - this.margin.left - this.margin.right; this.plot_height = 500 - this.margin.top - this.margin.bottom; this.min = d3.min(this.sample_vals); this.max = d3.max(this.sample_vals); this.svg = this.create_svg(); this.enter_data(); } Box_Plot.prototype.get_samples = function() { var sample; return this.sample_vals = (function() { var _i, _len, _ref, _results; _ref = this.sample_list; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { sample = _ref[_i]; if (sample.value !== null) { _results.push(sample.value); } } return _results; }).call(this); }; Box_Plot.prototype.create_svg = function() { var svg; svg = d3.box().whiskers(this.inter_quartile_range(1.5)).width(this.plot_width - 30).height(this.plot_height - 30).domain([this.min, this.max]); return svg; }; Box_Plot.prototype.enter_data = function() { return d3.select("#box_plot").selectAll("svg").data([this.sample_vals]).enter().append("svg:svg").attr("class", "box").attr("width", this.plot_width).attr("height", this.plot_height).append("svg:g").call(this.svg); }; Box_Plot.prototype.inter_quartile_range = function(k) { return (function(_this) { return function(d, i) { var inter_quartile_range, j, q1, q3; console.log("iqr d:", d); q1 = d.quartiles[0]; q3 = d.quartiles[2]; inter_quartile_range = (q3 - q1) * k; console.log("iqr:", inter_quartile_range); i = 0; j = d.length; console.log("d[-1]:", d[1]); console.log("q1 - iqr:", q1 - inter_quartile_range); while (d[i] < q1 - inter_quartile_range) { i++; } while (d[j] > q3 + inter_quartile_range) { j--; } console.log("[i, j]", [i, j]); return [i, j]; }; })(this); }; return Box_Plot; })(); root.Box_Plot = Box_Plot;