是否可以使 ChartJS X-Axis 成为基于数据并格式化为月份的自动日期?

Is it possible to make ChartJS X-Axis an automatic day based on data and formatted to month?

目前我的 折线 图表有问题。我目前在一个数组中获取数据并将其解析到图表中,该数据从“今天”返回。

我想知道的是,是否可以根据给定的数据使 x 轴自动显示月份。例如,如果数据只有 5 个数据点,则 x 轴将只显示本月和一个包含给定数据点的折线图。

但是,如果数据在数组中有 144 个数据点,则 x 轴显示横跨 5(多)个月的线。

这可能吗?目前我有这个,但它没有显示任何数据:

function populateLine(elementID, data) {

    let linectx = document.getElementById(elementID).getContext('2d');
    const _lineChart = new Chart(linectx, {
        type: 'line',
        data: {
            // labels: ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
            datasets: [{
                data: data,
                borderWidth: 3
            }]
        },
        options: {
            plugins: {
                legend: {
                    display: false
                },
            },
            scales: {
                x: {
                    grid: {
                        display: false
                    },
                    type: 'time',
                    time: {
                        unit: 'month'
                    }
                },
                y: {
                    grid: {
                        display: false
                    }
                }
            },
            elements: {
                point: {
                    radius: 0
                }
            }
        }
    });
}

如您所见,我已经注释掉了标签,因为这确实会显示数据,但不是从今天开始倒推,而是根据数据点从 1 月开始跨月显示,所以如果我有 5 个数据点它创建了一条从一月到六月的线。但是我在基于一天的 x 轴从今天开始倒退,但在 x 轴上以月为单位显示。

对于遇到此问题的任何人,我最终使用 luxon 库解决了这个问题。

let arrayOfDates = [];

for (let i = 0; i < data.length; i++) {
    arrayOfDates.push(DateTime.local().minus({
        days: i
    }).toLocaleString({
        month: 'short',
        day: 'numeric'
    }));
}

arrayOfDates.reverse();

所以这里发生的事情是我基于今天创建一个日期数组,然后为每个数据点减去一天。然后我反转数组以匹配图表中数据的方向。然后我使用这个日期数组作为标签。