ChartJS: datalabels: show percentage value in Pie piece

后端 未结 4 1447
一向
一向 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:16

    Updated fiddle with 2 decimal precision.

    You were not computing the sum, instead storing the current value in sum only for every value.

    Here is the working fiddle : https://jsfiddle.net/a1Lvn4eb/55/

    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 sum = 0;
                    let dataArr = ctx.chart.data.datasets[0].data;
                    dataArr.map(data => {
                        sum += data;
                    });
                    let percentage = (value*100 / sum).toFixed(2)+"%";
                    return percentage;
                },
                color: '#fff',
            }
        }
    };
    
    var ctx = document.getElementById("pie-chart").getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'pie',
        data: {
            datasets: data
        },
        options: options
    });
    

提交回复
热议问题