|
1 var w = 280, |
|
2 h = 280, |
|
3 m = [10, 0, 20, 35], // top right bottom left |
|
4 n = 10000; // number of samples to generate |
|
5 |
|
6 var chart = d3.chart.qq() |
|
7 .width(w) |
|
8 .height(h) |
|
9 .domain([-.1, 1.1]) |
|
10 .tickFormat(function(d) { return ~~(d * 100); }); |
|
11 |
|
12 var vis = d3.select("#chart") |
|
13 .append("svg:svg") |
|
14 .append("svg:g") |
|
15 .attr("transform", "translate(" + m[3] + "," + m[0] + ")"); |
|
16 |
|
17 d3.json("turkers.json", function(turkers) { |
|
18 var tm = science.stats.mean(turkers), |
|
19 td = Math.sqrt(science.stats.variance(turkers)), |
|
20 dd = [ |
|
21 [0.10306430789206111, 0.0036139086950272735, 0.30498647327844536], |
|
22 [0.5924252668569606, 0.0462763685758622, 0.4340870312025223], |
|
23 [0.9847627827855167, 2.352350767874714e-4, 0.2609264955190324] |
|
24 ]; |
|
25 |
|
26 var g = vis.selectAll("g") |
|
27 .data([{ |
|
28 x: d3.range(n).map(Math.random), |
|
29 y: turkers, |
|
30 label: "Uniform Distribution" |
|
31 }, { |
|
32 x: d3.range(n).map(normal1(tm, td)), |
|
33 y: turkers, |
|
34 label: "Gaussian (Normal) Distribution" |
|
35 }, { |
|
36 x: d3.range(n).map(normal3(dd)), |
|
37 y: turkers, |
|
38 label: "Mixture of 3 Gaussians" |
|
39 }]) |
|
40 .enter().append("svg:g") |
|
41 .attr("class", "qq") |
|
42 .attr("transform", function(d, i) { return "translate(" + (w + m[1] + m[3]) * i + ")"; }); |
|
43 |
|
44 g.append("svg:rect") |
|
45 .attr("class", "box") |
|
46 .attr("width", w) |
|
47 .attr("height", h); |
|
48 |
|
49 g.call(chart); |
|
50 |
|
51 g.append("svg:text") |
|
52 .attr("dy", "1.3em") |
|
53 .attr("dx", ".6em") |
|
54 .text(function(d) { return d.label; }); |
|
55 |
|
56 chart.duration(1000); |
|
57 |
|
58 window.transition = function() { |
|
59 g.map(randomize).call(chart); |
|
60 }; |
|
61 }); |
|
62 |
|
63 function randomize(d) { |
|
64 d.y = d3.range(n).map(Math.random); |
|
65 return d; |
|
66 } |