Edit in JSFiddle

var canvasHeight = 200;
var dataSet = [108, 207, 306, 405, 504, 603, 702, 603, 504, 405, 306, 207, 108];
var heightRatio = d3.max(dataSet) / canvasHeight;

var canvas = d3.select("#chart")
    .append("svg").attr("width", "100%")
    .attr("height", canvasHeight + "px")

var rectWidth = canvas.style("width").replace("px", "") / dataSet.length;
var barPadding = rectWidth / 5;

//Chart
canvas.selectAll('rect')
    .data(dataSet)
    .enter()
    .append('rect');

canvas.selectAll('rect')
.attr('x', function(d,i){return i*( rectWidth );})
.attr('y',  function(d){return canvasHeight;})
.attr("height", function(d){return 0;})
.attr("width", rectWidth - barPadding)
.attr("fill", function(d){ return "rgb(0, " + Math.floor(200 - d/d3.max(dataSet) * 100 )   +", 0)"; });

//Animate the chart
canvas.selectAll('rect')
.transition().duration(3000)
.attr('y',  function(d){return canvasHeight - d/heightRatio;})
.attr("height", function(d){return d/heightRatio;});

// Text
canvas.selectAll('text')
    .data(dataSet)
    .enter()
    .append('text');

canvas.selectAll('text')
.attr('x', function(d,i){return i*( rectWidth ) + barPadding * 2 ;}) 
.attr('y',  function(d){return canvasHeight - d/heightRatio + 15;})
.style("text-anchor", "middle")
.attr("font-family", "Open Sans,Arial,sans-serif")
.attr("font-size", "14px")
.attr("font-weight", "800")
.attr("fill", "#ffffff")
.text(function(d){return d;});
<body>
    
    <div class="">

        <div class="col-xs-10">
            <div id="chart" class="chart-container">
            
            </div>
        </div>
    </div>
    
</body>
.chart-container {
    background-color: #e1e1e8;
    padding: 10px 20px;
}