1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
// 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;
|