是否可以使 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();
所以这里发生的事情是我基于今天创建一个日期数组,然后为每个数据点减去一天。然后我反转数组以匹配图表中数据的方向。然后我使用这个日期数组作为标签。
目前我的 折线 图表有问题。我目前在一个数组中获取数据并将其解析到图表中,该数据从“今天”返回。
我想知道的是,是否可以根据给定的数据使 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();
所以这里发生的事情是我基于今天创建一个日期数组,然后为每个数据点减去一天。然后我反转数组以匹配图表中数据的方向。然后我使用这个日期数组作为标签。