This is an example of working with the selection.each() function in d3.js.
Implemented in response to: @dchud's question on twitter.
This is an example of working with the selection.each() function in d3.js.
Implemented in response to: @dchud's question on twitter.
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>3 Dimensional Array</title> | |
| <script src='http://d3js.org/d3.v2.min.js' type='text/javascript'></script> | |
| </head> | |
| <body> | |
| <script type='text/javascript'> | |
| var width = 900; | |
| var height = 400; | |
| // generate random data into five arrays | |
| var data = d3.range(5).map(function() { return d3.range(90).map(function() { return Math.floor(Math.random() * 100)})}); | |
| var max = d3.max(data, function (d) { return d3.max(d); } ), | |
| min = d3.min(data, function (d) { return d3.min(d); }) | |
| graphHeight = height/data.length, | |
| middle = graphHeight/2; | |
| var x = d3.scale.linear() | |
| .domain([min, max]) | |
| .range([0, width]); | |
| var y = d3.scale.linear() | |
| .domain([-max, max]) | |
| .range([graphHeight, 0]); | |
| var color = d3.scale.ordinal() | |
| .range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56"]); | |
| var container = d3.select('body').append('div') | |
| .attr('width', width) | |
| .attr('height', height); | |
| container.selectAll('svg') | |
| .data(data) | |
| .enter().append('svg') | |
| .attr('width', '100%') | |
| .attr('height', graphHeight) | |
| .each(function(d, i) { | |
| d3.select(this).selectAll('path.area') | |
| .data([d]) | |
| .enter() | |
| .append('path') | |
| .attr('class', 'path') | |
| .attr('stroke', 'black') | |
| .attr('stroke-width', 1) | |
| .attr('opacity', 0.8) | |
| .style('fill', color(i)) | |
| .attr('d', d3.svg.area() | |
| .interpolate('bundle') | |
| .x(function(e, j) { return x(j); }) //e, j for clarity sake, may still work without it | |
| .y0(function(e) { return middle + y(e); }) | |
| .y1(function(e) { return middle - y(e); }) | |
| ); | |
| }); | |
| </script> | |
| </body> | |
| </html> |