ChartJS: datalabels: show percentage value in Pie piece

后端 未结 4 1448
一向
一向 2020-12-09 02:33

I have a piechart with four labels:

var data = [{
    data: [50, 55, 60, 33],
    labels: [\"India\", \"China\", \"US\", \"Canada\"],
    backgroundColor: [
         


        
4条回答
  •  天涯浪人
    2020-12-09 03:28

    The problem is how you're calculating sum. See below.

    Fiddle

     var data = [{
       data: [50, 55, 60, 33],
       labels: ["India", "China", "US", "Canada"],
       backgroundColor: [
         "#4b77a9",
         "#5f255f",
         "#d21243",
         "#B27200"
       ],
       borderColor: "#fff"
     }];
    
     var options = {
       tooltips: {
         enabled: false
       },
       plugins: {
         datalabels: {
           formatter: (value, ctx) => {
    
             let datasets = ctx.chart.data.datasets;
    
             if (datasets.indexOf(ctx.dataset) === datasets.length - 1) {
               let sum = datasets[0].data.reduce((a, b) => a + b, 0);
               let percentage = Math.round((value / sum) * 100) + '%';
               return percentage;
             } else {
               return percentage;
             }
           },
           color: '#fff',
         }
       }
     };
    
    
     var ctx = document.getElementById("pie-chart").getContext('2d');
     var myChart = new Chart(ctx, {
       type: 'pie',
       data: {
         datasets: data
       },
       options: options
     });
    

提交回复
热议问题