我使用了我在堆栈溢出上找到的一个脚本来对堆叠条形图进行排序。唯一的问题是,堆叠的条形图按条形图总和排序。我一直在努力使用下面的脚本,但找不到一种方法来根据堆栈的一个值而不是堆叠条形图的总和对堆叠条形图进行排序。这是我使用的代码:
Chart.plugins.register({
id:"p2",
datasets: [],
getData(labels, datasets) {
const sum = [];
for (i = 0; i < datasets[0].length; i++) {
sum.push({
label: labels[i],
data: datasets.map(e => e[i]),
get sum() { // ES6 - getter
return this.data.reduce((a, b) => a + b);
}
});
}
return sum;
},
beforeUpdate(chart) {
chart.data.datasets.forEach((dataset, datasetIndex) => {
this.datasets.push(dataset.data);
});
const data_store = this.getData(chart.data.labels, this.datasets).sort((a,b) => b.sum - a.sum);
data_store.forEach((d,i) => {
chart.data.labels[i] = d.label;
d.data.forEach((v, vi) => {
chart.data.datasets[vi].data[i] = v;
});
});
}
});
发布于 2020-04-13 00:04:05
排序函数当前使用的是sum:
.sort((a,b) => b.sum - a.sum)
因此,将其替换为您希望排序的数据:
.sort((a,b) => b.data[i] - a.data[i])
其中,i
是您想要的行。
https://stackoverflow.com/questions/61178138
复制