gpt4 book ai didi

javascript - ChartJS : datalabels: show percentage value in Pie piece

转载 作者:可可西里 更新时间:2023-11-01 02:55:36 26 4
gpt4 key购买 nike

我有一个带有四个标签的饼图:

var data = [{
data: [50, 55, 60, 33],
labels: ["India", "China", "US", "Canada"],
backgroundColor: [
"#4b77a9",
"#5f255f",
"#d21243",
"#B27200"
],
borderColor: "#fff"
}];

使用 chartjs-plugin-datalabels 插件,我想用下面的代码在每个 Pie block 中显示百分比值:

formatter: (value, ctx) => {

let datasets = ctx.chart.data.datasets;

if (datasets.indexOf(ctx.dataset) === datasets.length - 1) {
let sum = 0;
datasets.map(dataset => {
sum += dataset.data[ctx.dataIndex];
});
let percentage = Math.round((value / sum) * 100) + '%';
return percentage;
} else {
return percentage;
}
},
color: '#fff',
}

我得到的是所有馅饼 block 的 100% 值,而不是各自的百分比。这是 JSFiddle ( https://jsfiddle.net/kingBethal/a1Lvn4eb/7/ )

最佳答案

更新后的 fiddle 精度为 2 位小数。

您没有计算总和,而是仅将每个值的当前值存储在总和中。

这是工作 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
});

关于javascript - ChartJS : datalabels: show percentage value in Pie piece,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com