--- title: "D3.js in Jekyll Markdown" date: 2017-01-02 15:00:00 categories: [code] tags: [code, d3js] --- I've used d3.select to target an element `<div id="example">` in this document: <style> div.example { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } .box { font: 10px sans-serif; } .box line, .box rect, .box circle { fill: #fff; stroke: #000; stroke-width: 1.5px; } .box .center { stroke-dasharray: 3,3; } .box .outlier { fill: none; stroke: #ccc; } </style> <script src="http://d3js.org/d3.v3.min.js"></script> <script src="http://bl.ocks.org/mbostock/raw/4061502/0a200ddf998aa75dfdb1ff32e16b680a15e5cb01/box.js"></script> <script> var margin = {top: 10, right: 50, bottom: 20, left: 50}, width = 120 - margin.left - margin.right, height = 500 - margin.top - margin.bottom; var min = Infinity, max = -Infinity; var chart = d3.box() .whiskers(iqr(1.5)) .width(width) .height(height); d3.csv("/morley.csv", function(error, csv) { var data = []; csv.forEach(function(x) { var e = Math.floor(x.Expt - 1), r = Math.floor(x.Run - 1), s = Math.floor(x.Speed), d = data[e]; if (!d) d = data[e] = [s]; else d.push(s); if (s > max) max = s; if (s < min) min = s; }); chart.domain([min, max]); var svg = d3.select("div#example").selectAll("svg") .data(data) .enter().append("svg") .attr("class", "box") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.bottom + margin.top) .append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")") .call(chart); setInterval(function() { svg.datum(randomize).call(chart.duration(1000)); }, 2000); }); function randomize(d) { if (!d.randomizer) d.randomizer = randomizer(d); return d.map(d.randomizer); } function randomizer(d) { var k = d3.max(d) * .02; return function(d) { return Math.max(min, Math.min(max, d + k * (Math.random() - .5))); }; } // Returns a function to compute the interquartile range. function iqr(k) { return function(d, i) { var q1 = d.quartiles[0], q3 = d.quartiles[2], iqr = (q3 - q1) * k, i = -1, j = d.length; while (d[++i] < q1 - iqr); while (d[--j] > q3 + iqr); return [i, j]; }; } </script> <div id="example"></div> Things to keep in mind: * Include morley.csv (Search local JavaScript for `/morley.csv`) * Include D3.js * Include box.js * Include the local CSS and JavaScript Check out [the code for this post on GitHub](https://raw.githubusercontent.com/dancole/dancole.github.io/master/_posts/2017-01-02-d3js-example.markdown).