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)...