ChartJS 如何删除图表中的重复数据集标签

qoefvg9y  于 2022-11-07  发布在  Chart.js
关注(0)|答案(1)|浏览(201)

我有下面的条形图,我循环遍历一个数组,以添加到新的数据集,如下所示:

for (var i = 0; i < this.Chart.length; i++) {
            barChartData.datasets.push({
                label: this.Chart[i].name,
                backgroundColor: this.chart[i].color
                data: [{
                    x: //set details
                    y: //set details
                }],
            });
        }

        this.data = {
            labels: moment.months(),
            datasets: barChartData.datasets

        };

        this.config = {
            type: 'bar',
            data: this.data,
            options: {
                scales: {
                    x: {
                        stacked: true,
                        grid: {
                            display: false
                        }
                    },
                    y: {
                        stacked: true,
                        grid: {
                            display: false
                        }
                    }

                },
                datasets: {
                    bar: {
                        barThickness: 30
                    }
                }

            },
            responsive: true,
            maintainAspectRatio: true,

        };

一切都按预期工作,唯一的问题是这一行:

label: this.Chart[i].name,

其中我循环遍历标签的名称,我有重复项,因为一个标签名称可以有多个数据关联到它的不同月份,这是正确的行为。
它看起来是这样的:

是否有一种方法可以在图表上删除重复的标签,以便显示,使其看起来像:

dgjrabp2

dgjrabp21#

您可以使用此函数从列表中删除重复项

function remove_duplicates_safe(arr) {
    var seen = {};
    var ret_arr = [];
    for (var i = 0; i < arr.length; i++) {
        if (!(arr[i] in seen)) {
            ret_arr.push(arr[i]);
            seen[arr[i]] = true;
        }
    }
    return ret_arr;

}

然后,您可以执行类似的操作或创建所需的任何逻辑
=删除重复项安全(此图表);
替换此行
对于(变量i = 0; i〈此图表长度; i++)的情况下,
用这条线
对于(变量i = 0; i〈列表无重复项。长度; i++)的情况下,

相关问题