Search code examples
javascriptchart.js

How to change the color of legend in chartjs and be able to add one more legend?


I want to change the color of legend, because I want different colors to represent different situations.But now the legend uses just the first color I set on the bar chart.

I also want to ask, is it able to set one more legend?Like pink is for situationA, blue for B?

Here is the link:

Code is here Can anyone help?Thank you so much.


Solution

  • To set more legends, you need to add multiple datasets. Each dataset will represent one legend and the legend­'s color will automatically be set according to the dataset­'s background color.

    Chart.plugins.register({
       beforeDraw: function(c) {
          var legends = c.legend.legendItems;
          legends.forEach(function(e) {
             e.fillStyle = '#07C';
          });
       }
    });
    
    var canvas = document.getElementById('myChart');
    
    var data = {
       labels: ["January", "February", "March", "April", "May", "June"],
       datasets: [{
          label: "My First dataset",
          backgroundColor: "rgba(255,99,132,0.4)",
          hoverBorderColor: "rgba(255,99,132,1)",
          data: [65, 59, 20, 81, 56, 55],
       }, {
          label: "My Second dataset",
          backgroundColor: "rgba(25,25,255,0.4)",
          hoverBorderColor: "rgba(255,99,132,1)",
          data: [65, 59, 20, 81, 56, 55],
       }]
    };
    
    var option = {
       scales: {
          xAxes: [{
             stacked: true
          }],
          yAxes: [{
             stacked: true,
             gridLines: {
                display: true,
                color: "rgba(255,99,132,0.2)"
             }
          }]
       }
    };
    
    var myBarChart = Chart.Bar(canvas, {
       data: data,
       options: option
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
    <canvas id="myChart" width="400" height="200"></canvas>