Horizontal Bar Chart using Chart.js v2 with right-aligned text inside the bars

by Shashi Kumar Nagulakonda

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.3/Chart.bundle.js"></script>
<canvas id="myChart" width="400" height="400"></canvas>

JavaScript

var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
  type: 'horizontalBar',
  data: {
    labels: ["Red", "Blue", "Green", "Yellow"],
    datasets: [{
      label: '# of Votes',
      data: [15, 25, 35, 45]
    }]
  },
  options: {
    scales: {
      xAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    },
    animation: {
      onComplete: function() {
        var chartInstance = this.chart;
        var ctx = chartInstance.ctx;
        console.log(chartInstance);

        var right = chartInstance.controller.boxes[1].right;
        ctx.textAlign = "center";

        Chart.helpers.each(this.data.datasets.forEach(function(dataset, i) {
          var meta = chartInstance.controller.getDatasetMeta(i);
          Chart.helpers.each(meta.data.forEach(function(bar, index) {
            ctx.fillText(dataset.data[index], right - ((right - bar._model.x)) - 50, bar._model.y);
          }), this)
        }), this);
      }
    }
  }
});