This example shows how d3.nest and d3.layout.stack can be used in conjunction. This forms the basis for a stacked bar chart. This is example 16 from the screencast Splitting Charts.
MIT License
xxxxxxxxxx
<html>
<head>
<meta charset="utf-8">
<title>D3 Example</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
</head>
<body>
<script>
var layerColumn = "religion";
var yColumn = "population";
var xColumn = "country";
function render(data){
var nested = d3.nest()
.key(function (d){ return d[layerColumn]; })
.entries(data);
var stack = d3.layout.stack()
.y(function (d){ return d[yColumn]; })
.values(function (d){ return d.values; });
var layers = stack(nested);
d3.select("body").append("pre")
.text(JSON.stringify(layers, null, 2));
}
function type(d){
d.population = +d.population;
return d;
}
d3.csv("religionByCountryTop5.csv", type, render);
</script>
</body>
</html>
https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js