作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图获得一个stackedBar 的所有值的总和,并将这个总数包含在工具提示中。
Note: my datasets aren't static, this is an example
var barChartData = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [{
label: 'Corporation 1',
backgroundColor: "rgba(220,220,220,0.5)",
data: [50, 40, 23, 45, 67, 78, 23]
}, {
label: 'Corporation 2',
backgroundColor: "rgba(151,187,205,0.5)",
data: [50, 40, 78, 23, 23, 45, 67]
}, {
label: 'Corporation 3',
backgroundColor: "rgba(151,187,205,0.5)",
data: [50, 67, 78, 23, 40, 23, 55]
}]
};
window.onload = function() {
var ctx = document.getElementById("canvas").getContext("2d");
window.myBar = new Chart(ctx, {
type: 'bar',
data: barChartData,
options: {
title:{
display:true,
text:"Chart.js Bar Chart - Stacked"
},
tooltips: {
mode: 'label',
callbacks: {
label: function(tooltipItem, data) {
var corporation = data.datasets[tooltipItem.datasetIndex].label;
var valor = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
var total = eval(data.datasets[tooltipItem.datasetIndex].data.join("+"));
return total+"--"+ corporation +": $" + valor.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
}
}
},
responsive: true,
scales: {
xAxes: [{
stacked: true,
}],
yAxes: [{
stacked: true
}]
}
}
});
};
total
是每个数据集的总和,我需要每个stackedBar的总和。
最佳答案
首先你应该知道,如果你在 callback
中返回一个数组而不是单个字符串。在工具提示中,它将显示数组中的所有字符串,就好像它们是不同的数据集一样(有关更多详细信息,请参阅 this answer)。
因此,我将您的回调编辑为以下内容:
callbacks: {
label: function(tooltipItem, data) {
var corporation = data.datasets[tooltipItem.datasetIndex].label;
var valor = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
// Loop through all datasets to get the actual total of the index
var total = 0;
for (var i = 0; i < data.datasets.length; i++)
total += data.datasets[i].data[tooltipItem.index];
// If it is not the last dataset, you display it as you usually do
if (tooltipItem.datasetIndex != data.datasets.length - 1) {
return corporation + " : $" + valor.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
} else { // .. else, you display the dataset and the total, using an array
return [corporation + " : $" + valor.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,'), "Total : $" + total];
}
}
}
关于chart.js - 如何获得stackedBar ChartJs中的总值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39373561/
我有一个 StackedBar,每条显示 5 个值,数据值显示在每个块的中间。到现在为止还挺好。但是,当该值为零时,仍然显示该值,当有很多零时会很困惑。 我希望能够隐藏零的标签。我怎样才能做到这一点?
如何使用 java 在运行时动态更改 Android StackedActionBar 的 Tab 文本颜色、Tab 分隔线颜色和选定的导航 Tab 选择器颜色?我一直无法找到解决方案,而不必每次都更
我正在使用 angular-chart.js,但我发现在实现一组 StackedBar 时遇到问题,如下所示: 这是我的代码下面: $scope.labels = []; $s
我是一名优秀的程序员,十分优秀!