topical media & game development

talk show tell print

mobile-data-circle-08.htm / htm



  <script src="http://d3js.org/d3.v3.min.js"></script>
  <link rel="stylesheet" type="text/css" href="mobile-data-circle-style-d3.css">
  <script type="text/javascript">
  

data


    var data = [32, 57, 112],
        dataEnter = data.concat(293),
        dataExit = data.slice(0, 2),
        w = 360,
        h = 180,
        x = d3.scale.ordinal().domain([57, 32, 112]).rangePoints([0, w], 1),
        y = d3.scale.ordinal().domain(data).rangePoints([0, h], 2);
  
</script> <p>Using the enter selection, we can create new circles for any missing data. Each new circle is already bound to the data, so we can use data to compute attributes and styles:</p> <div class="chart" id="chart-8"> <pre class="code">var enter = circle.enter().append("circle"); enter.attr("cy", 90); enter.attr("cx", 160); enter.attr("r", function(d) { return Math.sqrt(d); }); </pre> <button>run</button> <!-- <svg width="360" height="180"><g transform="translate(180,45)"><circle class="little" r="12"></circle><text dy=".35em" text-anchor="middle">32</text></g><g transform="translate(60,90)"><circle class="little" r="12"></circle><text dy=".35em" text-anchor="middle">57</text></g><g transform="translate(300,135)"><circle class="little" r="12"></circle><text dy=".35em" text-anchor="middle">112</text></g><g class="data" transform="translate(20,20)"></g><g class="data" transform="translate(40,20)"></g><g class="data" transform="translate(60,20)"></g><g class="data" transform="translate(80,20)"><circle class="little" r="0.000001"></circle><rect x="-10" y="-10" width="20" height="20" style="fill: #90ee90; stroke: #008000;"></rect><text dy=".35em" text-anchor="middle">293</text></g></svg> --> </div> <script type="text/javascript">

script


  (function() {
    var svg = d3.select("#chart-8").append("svg")
        .attr("width", w)
        .attr("height", h);
  
    var g = svg.selectAll("g")
        .data(data)
      .enter().append("g")
        .attr("transform", function(d) { return "translate(" + x(d) + "," + y(d) + ")"; });
  
    g.append("circle")
        .attr("class", "little")
        .attr("r", 12);
  
    g.append("text")
        .attr("dy", ".35em")
        .attr("text-anchor", "middle")
        .text(String);
  

enter


    var g = svg.selectAll(".data")
        .data(dataEnter)
      .enter().append("g")
        .attr("class", "data")
        .attr("transform", function(d, i) { return "translate(" + 20 * (i + 1) + ",20)"; })
        .filter(function(d, i) { return i == 3; });
  

append


    g.append("circle")
        .attr("class", "little")
        .attr("r", 1e-6);
  
    g.append("rect")
        .attr("x", -10)
        .attr("y", -10)
        .attr("width", 20)
        .attr("height", 20)
        .style("fill", "lightgreen")
        .style("stroke", "green");
  
    g.append("text")
        .attr("dy", ".35em")
        .attr("text-anchor", "middle")
        .text(String);

 

button


    d3.select("#chart-8 button").on("click", function() {
      g.attr("transform", "translate(80,20)");
      g.select("circle").attr("r", 1e-6);
      g.select("rect").style("opacity", 1);
      var t = g.transition().duration(750);
      t.attr("transform", "translate(160,100)");
      t.select("circle").attr("r", Math.sqrt);
      t.select("rect").style("opacity", 1e-6);
    });
  })();
</script>


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2780434-1"; urchinTracker(); </script>