toolkit/javascript/d3/examples/qq/qq.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     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 }