ChartJS - 将 x 轴标签从一天缩放到多个月
ChartJS - Scale x axis labels from single days to multiple months
我想创建一个折线图,它在 x 轴上有多个单日作为标签。这实际上工作得很好。我将这个 javascript 数组传递给 x_axis(example):
['2019-01-02', '2019-01-03', '2019-01-04', '2019-01-07', '2019-01-08', '2019-01-09', '2019-01-10', '2019-01-11', '2019-01-14', '2019-01-15', '2019-01-16']
问题是,图表可以有 50 个不同的 x 轴点,因此同时显示所有这些点没有意义,因为它填充了 x 轴。
我想改为缩放它,以便它只使用 x 轴上的月份。我一直在读到我必须用比例尺设置 xAxis,但我尝试了各种方法,但似乎没有用。
这是我尝试失败的示例:
options: {
scales: {
xAxis: [{
type: 'time',
position: 'bottom',
time: {
parser: 'YYYY-MM-DD',
displayFormats: {'day': 'MM/YY'},
tooltipFormat: 'DD/MM/YY',
unit: 'month',
}
}]
},
谁能指点一下如何做到这一点?
谢谢!
如果您使 displayFormats
中的条目与 unit
相同,它应该会按预期工作。
displayFormats: {
month: 'MM/YY'
}
请查看下面的可运行代码,看看它是如何工作的。
const now = new Date();
const data = new Array(100).fill().map((v, i) => {
const date = new Date();
date.setDate(now.getDate() + i);
return { x: date.toISOString().substring(0, 10), y: Math.floor(Math.random() * 10) };
});
new Chart('chart', {
type: 'line',
data: {
datasets: [{
label: "Data",
borderColor: "rgb(255, 0, 0)",
data: data,
fill: false
}
]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}],
xAxes: [{
type: 'time',
time: {
parser: 'YYYY-MM-DD',
unit: 'month',
displayFormats: {
month: 'MM/YY'
},
tooltipFormat: 'DD/MM/YY'
}
}]
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.bundle.js"></script>
<canvas id="chart" height="90"></canvas>
我想创建一个折线图,它在 x 轴上有多个单日作为标签。这实际上工作得很好。我将这个 javascript 数组传递给 x_axis(example):
['2019-01-02', '2019-01-03', '2019-01-04', '2019-01-07', '2019-01-08', '2019-01-09', '2019-01-10', '2019-01-11', '2019-01-14', '2019-01-15', '2019-01-16']
问题是,图表可以有 50 个不同的 x 轴点,因此同时显示所有这些点没有意义,因为它填充了 x 轴。
我想改为缩放它,以便它只使用 x 轴上的月份。我一直在读到我必须用比例尺设置 xAxis,但我尝试了各种方法,但似乎没有用。
这是我尝试失败的示例:
options: {
scales: {
xAxis: [{
type: 'time',
position: 'bottom',
time: {
parser: 'YYYY-MM-DD',
displayFormats: {'day': 'MM/YY'},
tooltipFormat: 'DD/MM/YY',
unit: 'month',
}
}]
},
谁能指点一下如何做到这一点? 谢谢!
如果您使 displayFormats
中的条目与 unit
相同,它应该会按预期工作。
displayFormats: {
month: 'MM/YY'
}
请查看下面的可运行代码,看看它是如何工作的。
const now = new Date();
const data = new Array(100).fill().map((v, i) => {
const date = new Date();
date.setDate(now.getDate() + i);
return { x: date.toISOString().substring(0, 10), y: Math.floor(Math.random() * 10) };
});
new Chart('chart', {
type: 'line',
data: {
datasets: [{
label: "Data",
borderColor: "rgb(255, 0, 0)",
data: data,
fill: false
}
]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}],
xAxes: [{
type: 'time',
time: {
parser: 'YYYY-MM-DD',
unit: 'month',
displayFormats: {
month: 'MM/YY'
},
tooltipFormat: 'DD/MM/YY'
}
}]
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.bundle.js"></script>
<canvas id="chart" height="90"></canvas>