JSFiddle - React, Tailwind, and code Playground
by DJ Martin
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.10/d3.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.7/crossfilter.js"></script>
<script src="https://dc-js.github.io/dc.js/js/dc.js"></script>
<link rel="stylesheet" href="https://dc-js.github.io/dc.js/css/dc.css">
<div id="chart"></div>
JavaScript
var data = [
{"date": "2014/02/09", "zeroEpisodes": 2, "oneEpisode": 10, "twoEpisodes": 5, "manyEpisodes": 8},
{"date": "2014/02/10", "zeroEpisodes": 3, "oneEpisode": 9, "twoEpisodes": 6, "manyEpisodes": 7},
{"date": "2014/02/11", "zeroEpisodes": 2, "oneEpisode": 8, "twoEpisodes": 7, "manyEpisodes": 8},
{"date": "2014/02/12", "zeroEpisodes": 1, "oneEpisode": 7, "twoEpisodes": 8, "manyEpisodes": 9},
{"date": "2014/02/13", "zeroEpisodes": 2, "oneEpisode": 6, "twoEpisodes": 5, "manyEpisodes": 12},
{"date": "2014/02/14", "zeroEpisodes": 3, "oneEpisode": 5, "twoEpisodes": 6, "manyEpisodes": 11},
{"date": "2014/02/15", "zeroEpisodes": 1, "oneEpisode": 2, "twoEpisodes": 4, "manyEpisodes": 18}
];
dateFormat = d3.time.format("%Y/%m/%d");
data.forEach(function (e) {
e.dd = dateFormat.parse(e.date);
});
var chart = dc.lineChart("#chart");
var xf = crossfilter(data);
var dateDim = xf.dimension(function (d) {
return d.dd;
});
var eventsByDate = dateDim.group().reduce(
function (p, v) {
p.zeroEpisodes += v.zeroEpisodes;
p.oneEpisode += v.oneEpisode;
p.twoEpisodes += v.twoEpisodes;
p.manyEpisodes += v.manyEpisodes;
return p;
},
function (p, v) {
p.zeroEpisodes += v.zeroEpisodes;
p.oneEpisode -= v.oneEpisode;
p.twoEpisodes -= v.twoEpisodes;
p.manyEpisodes -= v.manyEpisodes;
return p;
},
function () {
return {
zeroEpisodes: 0,
oneEpisode: 0,
twoEpisodes: 0,
manyEpisodes: 0
};
}
);
var minDate = dateDim.bottom(1)[0].dd;
var maxDate = dateDim.top(1)[0].dd;
chart
.margins({top: 100, right: 20, left: 50,...