JSFiddle - React, Tailwind, and code Playground
by brentkeller
HTML
<!-- For StackOverflow question -->
<!-- This is a modified version of this sample: http://bl.ocks.org/3020685 -->
<!-- Remove one or more items from the sourceData array and re-run to see the error in the console -->
CSS
body {
font: 10px sans-serif;
}
.axis path, .axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
JavaScript
var sourceData =
[
{key:'Group1',value:37,date:'04/23/12'},
{key:'Group1',value:32,date:'04/24/12'},
{key:'Group1',value:45,date:'04/25/12'},
{key:'Group1',value:24,date:'04/26/12'},
{key:'Group2',value:12,date:'04/23/12'},
{key:'Group2',value:19,date:'04/24/12'},
{key:'Group2',value:16,date:'04/25/12'},
{key:'Group2',value:52,date:'04/26/12'},
{key:'Group3',value:46,date:'04/23/12'},
{key:'Group3',value:42,date:'04/24/12'},
{key:'Group3',value:19,date:'04/25/12'},
{key:'Group3',value:16,date:'04/26/12'}
]
var format = d3.time.format("%m/%d/%y");
var margin = {top: 20, right: 30, bottom: 30, left: 40},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var x = d3.time.scale()
.range([0, width]);
var y = d3.scale.linear()
.range([height, 0]);
var z = d3.scale.category20c();
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.ticks(d3.time.days);
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var stack = d3.layout.stack()
.offset("zero")
.values(function(d) { return d.values; })
.x(function(d) { return d.date; })
.y(function(d) { return d.value; });
var nest = d3.nest()
.key(function(d) { return d.key; });
var area = d3.svg.area()
.interpolate("cardinal")
.x(function(d) { return x(d.date); })
.y0(function(d) { return y(d.y0); })
.y1(function(d) { return y(d.y0 + d.y); });
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
sourceData.forEach(function(d) {
d.date = format.parse(d.date);
d.value = +d.value;
});
var data = sourceData;
var layers = stack(nest.entries(data));
x.domain(d3.extent(data, function(d)...