gpt4 book ai didi

javascript - charts.js饼图中的千位分隔符

转载 作者:搜寻专家 更新时间:2023-11-01 05:03:42 26 4
gpt4 key购买 nike

我正在使用 Chart.js 绘制饼图。

画图我用

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'pie',
data: {
labels: #{raw @labels.to_json},
datasets: [{
backgroundColor: #{raw @colors.to_json},
data: #{@followers}
}]
}
});

弄清楚这个数据的事情是这样的

data: {
labels: ["FAISAL","muhammadfaisali","faisaliqbal3699"],
datasets: [{
backgroundColor: ["#00b638","#efaa30","#50c8ea"],
data: [500000, 75000, 100000]
}]
}

我需要展示这些 data: [500000, 75000, 100000]作为千位分隔符,如 ["500,000", "75,000", "100,000"]

我尝试了不同的

包括写这个方法在内的事情

function separator(numbers)
{ data = []
for (i = 0; i < numbers.length; ++i) {
data.push(numbers[i].toLocaleString())
}
data
}

并尝试像这样使用它

data: separator(#{@followers})

它按照我的意愿格式化数据,但给出类似 Cannot read property 'custom' of undefined 的错误

这里如何显示千位分隔符的数据

showing it like this now

最佳答案

为了在 chart.js 中执行此操作,您需要使用 tooltips.callbacks.label回调属性。此回调返回的值用于生成工具提示文本。

这是配置了工具提示回调的图表,该回调使用本地字符串表示形式表示数据值。

var ctx = document.getElementById("chart-area").getContext("2d");
var myPie = new Chart(ctx, {
type: 'pie',
data: {
labels: ["FAISAL","muhammadfaisali","faisaliqbal3699"],
datasets: [{
backgroundColor: ["#00b638","#efaa30","#50c8ea"],
data: [500000, 75000, 100000]
}],
},
options: {
title: {
display: true,
text: 'Employee Overview',
fontStyle: 'bold',
fontSize: 20
},
tooltips: {
callbacks: {
// this callback is used to create the tooltip label
label: function(tooltipItem, data) {
// get the data label and data value to display
// convert the data value to local string so it uses a comma seperated number
var dataLabel = data.labels[tooltipItem.index];
var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index].toLocaleString();

// make this isn't a multi-line label (e.g. [["label 1 - line 1, "line 2, ], [etc...]])
if (Chart.helpers.isArray(dataLabel)) {
// show value on first line of multiline label
// need to clone because we are changing the value
dataLabel = dataLabel.slice();
dataLabel[0] += value;
} else {
dataLabel += value;
}

// return the text to display on the tooltip
return dataLabel;
}
}
}
}
});

您可以在这个 codepen 看到它的实际效果.

关于javascript - charts.js饼图中的千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142527/

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