var color = d3.scaleOrdinal(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]); function stream() { var data = [ [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(800 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(400 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))], [Math.round(500 * ( Math.random() )),Math.round(200 * ( Math.random() ))] ] d3.select('#svg-stream').remove(); var svg = d3.select('#stream').append('svg').attr('id','svg-stream'); var width = d3.select('#svg-stream').node().getBoundingClientRect().width, height = d3.select('#svg-stream').node().getBoundingClientRect().height; var n = 4, // number of layers m = 60, // number of samples per layer k = 10; // number of bumps per layer var stack = d3.stack().keys(d3.range(n)).offset(d3.stackOffsetWiggle), layers0 = stack(d3.transpose(d3.range(n).map(function() { return bumps(m, k); }))), layers1 = stack(d3.transpose(d3.range(n).map(function() { return bumps(m, k); }))), layers = layers0.concat(layers1); var x = d3.scaleLinear() .domain([0, m - 1]) .range([0, width]); var x2 = d3.scaleLinear() .domain([0, m - 1]) .range([ width-10,0]); var y = d3.scaleLinear() .domain([d3.min(layers, stackMin), d3.max(layers, stackMax)]) .range([height, 0]); var z = d3.interpolateCool; var area = d3.area() .curve(d3.curveMonotoneX) .x(function(d, i) { return x(i); }) .y0(function(d) { return y(d[0]); }) .y1(function(d) { return y(d[1]); }); console.log('layers0'); console.log(d3.transpose(d3.range(n).map(function() { return bumps(m, k); }))); svg.selectAll("path") .data(layers0) .enter().append("path") .attr("d", area) .attr("fill", function(d,i) { return color(i); }); function stackMax(layer) { return d3.max(layer, function(d) { return d[1]; }); } function stackMin(layer) { return d3.min(layer, function(d) { return d[0]; }); } // Inspired by Lee Byron’s test data generator. function bumps(n, m) { var a = [], i; for (i = 0; i < n; ++i) a[i] = 0; for (i = 0; i < m; ++i) bump(a, n); return a; } function bump(a, n) { var x = 1 / (0.1 + Math.random()), y = 2 * Math.random() - 0.5, z = 10 / (0.1 + Math.random()); for (var i = 0; i < n; i++) { var w = (i / n - y) * z; a[i] += x * Math.exp(-w * w); } } // Add the x Axis svg.append("g").attr('class',"xaxis axis") //.attr("transform", "translate(0," + (height-20) + ")") .call(d3.axisBottom(x2)); } setInterval(stream,4000); setTimeout(stream,1000);