我发现您可以通过快速JavaScript回调函数将Chart.JS的x或y轴格式化为货币
callback: function(value, index, values) {
if (parseInt(value) >= 1000) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return '$' + value;
}
}
}
但data:
似乎并非如此。在我的实例中,这是一个包含数值的JavaScript 1D数组,我想添加一个美元符号,并在适用的地方添加逗号。如何使用Charts.jS
修改
这就是我填充我的JSON数组的方式 - 我想格式化data: values
var barChartData = {
labels: labelsarr,
datasets: [{
label: 'Amount',
backgroundColor: 'rgba(200, 200, 200, 0.75)',
borderColor: 'rgb(255, 99, 132)',
borderWidth: 1,
data: values
}]
};
JSON数组的格式为["AAAA",100,10000,2310,24420,30,50000,400000,70000,700,823200,923200,1111]
我想从index[1]
开始格式化以显示$和货币。如何实现这一目标?
第二次编辑时间
我尝试使用以下语法添加标题并将数据点和左轴格式化为货币,但这不再在我的页面上显示任何内容。
var ctx = document.getElementById('canvas').getContext('2d');
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labelsarr,
datasets: [{
label: 'Test',
data: values,
backgroundColor: 'rgba(0, 119, 204, 0.8)',
}]
},
options: {
responsive: true,
scales: {
yAxes: [{
ticks: {
beginAtZero: true,
callback: function(value, index, values) {
if (parseInt(value) >= 1000) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return '$' + value;
}
}
}
}]
},
legend: {
position: 'top',
},
title: {
display: true,
text: '<?php echo $name ?> Test'
}
tooltips: {
callbacks: {
label: function(t, d) {
var xLabel = d.datasets[t.datasetIndex].label;
var yLabel = t.yLabel >= 1000 ?
'$' + t.yLabel.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") :
'$' + t.yLabel;
return xLabel + ': ' + yLabel;
}
}
}
}
});
答案 0 :(得分:3)
这可以使用以下工具提示标签回调函数来实现......
tooltips: {
callbacks: {
label: function(t, d) {
var xLabel = d.datasets[t.datasetIndex].label;
var yLabel = t.yLabel >= 1000 ? '$' + t.yLabel.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '$' + t.yLabel;
return xLabel + ': ' + yLabel;
}
}
}
ᴡᴏʀᴋɪɴɢᴡᴏʀᴋɪɴɢxᴀᴍᴘʟᴇ
var labelsarr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'];
var values = ["AAAA", 100, 10000, 2310, 24420, 30, 50000, 400000, 70000, 700, 823200, 923200, 1111];
var ctx = document.getElementById('canvas').getContext('2d');
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labelsarr,
datasets: [{
label: 'Amount',
data: values,
backgroundColor: 'rgba(0, 119, 204, 0.8)',
}]
},
options: {
tooltips: {
callbacks: {
label: function(t, d) {
var xLabel = d.datasets[t.datasetIndex].label;
var yLabel = t.yLabel >= 1000 ? '$' + t.yLabel.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '$' + t.yLabel;
return xLabel + ': ' + yLabel;
}
}
},
scales: {
yAxes: [{
ticks: {
callback: function(value, index, values) {
if (parseInt(value) >= 1000) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return '$' + value;
}
}
}
}]
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<canvas id="canvas"></canvas>