d3 v4 stack bar

d3 v4 stacked bar chart

by fekkyDev s

HTML

<script src="https://d3js.org/d3.v4.min.js"></script>
<div id='stacked-bar'></div>

CSS

.axis text {
  font: 10px sans-serif;
}
.axis line,
.axis path {
  fill: none;
  stroke: #000;
  shape-rendering: crispEdges;
}
.axis--x path {
  display: none;
}
.path-line {
  fill: none;
  stroke: yellow;
  stroke-width: 1.5px;
}
svg {
  background: #f0f0f0;
}
.selected{
  stroke:#333;
  stroke-width:2;
    
}

JavaScript

var colors = ['#FBB65B', '#513551', '#de3163'];
    var dataset = [{
      "goodRating": 12,
      "avgRating": 12,
      "badRating": 12,
      
    }];
    var stack = d3.stack()
  .keys(['goodRating', 'avgRating', 'badRating']);
  var stackedSeries = stack(dataset);








  console.log('???',stackedSeries)

  // Create a g element for each series
  var svg = d3.select('#stacked-bar').append('svg').attr('height',60).attr('width',900).append('g');
var g = svg
	.selectAll('g.series')
	.data(stackedSeries)
	.enter()
	.append('g')
	.classed('series', true)
	.style('fill', function(d, i) {
		return colors[i];
	});
 
    
    var y = d3.scaleLinear()
  .domain([0, d3.max(stackedSeries, function(d) {  
    console.log(d);
    return d3.max(d, function(d) { return d[0] - d[1]; });  })])
  .range([900, 0]);
   
// For each series create a rect element for each day
g.selectAll('rect')
	.data(function(d) {
		return d;
	})
	.enter()
	.append('rect')
	.attr('width', function(d) {
   
		return d[1] - d[0];
	})
	.attr('x', function(d) {
		return d[0];
	})
	.attr('y', function(d, i) {
		return 1;
	})
	.attr('height', 19);