Yige Song
Yige Song

Reputation: 373

Add labels to bar chart: chartjs

I am creating bar charts using chartjs 3.5.1, and I am new to chartjs. I want to add value labels to each bar in my bar chart.

I have reviewed some relevant answers, but they are either too old or too complicated to achieve.

Below is the intended outcome, note that the non-hand-written part is what I have achieved. enter image description here

The code is below:

let chart2 = new Chart('chart2', {
  type: 'bar',
  data: {
    labels: ["a", "b", "c", "d"],
    datasets: [{
      data: [500, 400, 300, 200],
      }]
  },
  options: {
    indexAxis: 'y',
    plugins: {
      title: {
        display: true,
        text: "Graph"
      },
      legend: {
        display: false,
      }
    },
    scales: {
      y: {
        grid: {
          display: false
        },
      },
      x: {
        grid: {
          display: false
        }
      }
    }
  },

});

Really appreciate your help!

Upvotes: 4

Views: 5356

Answers (1)

uminder
uminder

Reputation: 26150

You can use the chartjs-plugin-datalabels library.

First you'll have to register the plugin, then you can define the desired options inside options.plugins.datalabels.

Please take a look at your amended code and see how it works.

Chart.register(ChartDataLabels);
new Chart('chart2', {
  type: 'bar',
  data: {
    labels: ["a", "b", "c", "d"],
    datasets: [{
      data: [500, 400, 300, 200],
    }]
  },
  options: {
    indexAxis: 'y',
    layout: {
      padding: {
        right: 60
      }
    },
    plugins: {
      title: {
        display: true,
        text: "Graph"
      },
      legend: {
        display: false,
      },
      datalabels: {
        color: 'blue',
        anchor: 'end',
        align: 'right',
        labels: {
          title: {
            font: {
              weight: 'bold'
            }
          }
        }
      }
    },
    scales: {
      y: {
        grid: {
          display: false
        },
      },
      x: {
        grid: {
          display: false
        }
      }
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chartjs-plugin-datalabels/2.0.0/chartjs-plugin-datalabels.min.js"></script>
<canvas id="chart2" height="100"></canvas>

Upvotes: 4

Related Questions