如何在Chart.js时间笛卡尔图中配置线性标签?实现X轴每2小时显示标签
解决Chart.js时间轴每2小时显示标签的配置问题
看了你的代码,要实现X轴每2小时显示一个标签(0h、2h、4h……),主要遗漏了这几个关键配置:
- 设置时间间隔步长:在
time配置里添加stepSize: 2,明确告诉Chart.js每2小时生成一个标签 - 调整刻度来源:把
ticks.source从'data'改成'auto',不然只会显示你数据里存在的时间点,不会自动生成间隔标签 - 自定义标签显示格式:添加
displayFormats,让小时显示成你想要的Xh格式 - 可选:指定时间范围:如果希望X轴从0点覆盖到24点,可以设置
time.min和time.max来固定范围,避免只显示数据覆盖的时间段
下面是修改后的完整代码,我把关键修改的地方标出来了:
<script> var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx, { type: 'line', data: { datasets: [{ label: 'AAA1111', data: [ { t: new Date("2015-3-15 12:30"), y: 12 }, { t: new Date("2015-3-15 14:40"), y: 45 }, { t: new Date("2015-3-15 17:50"), y: 77 } ], borderColor: 'rgba(255, 0, 0, 1)', borderWidth: 4, fill: false, lineTension: 0, lineJoint: "round", spanGaps: true }] }, options: { scales: { xAxes: [{ type: 'time', distribution: 'linear', time: { unit: 'hour', stepSize: 2, // 新增:每2小时一个刻度 displayFormats: { // 新增:自定义小时显示格式 hour: 'hh[h]' }, // 可选:固定时间范围,确保从0点到次日0点 min: new Date("2015-3-15 00:00"), max: new Date("2015-3-16 00:00") }, ticks: { source: 'auto' // 修改:自动生成刻度,不是只取数据里的时间 } }] } } }); </script>
解释下几个关键修改:
stepSize: 2:配合unit: 'hour',强制每2小时生成一个刻度标签displayFormats.hour: 'hh[h]':用hh显示两位小时数,[h]是直接显示字母h,这样就会输出00h、02h...22h,如果想要单数字(比如0h、2h),可以改成h[h]ticks.source: 'auto':让Chart.js根据时间范围自动计算刻度,而不是只显示你数据中存在的时间点min和max:如果你的数据只覆盖了部分时间段,设置这个可以让X轴完整显示0到24点的所有2小时间隔标签,不需要的话可以去掉
这样调整后,X轴就会按照你想要的每2小时显示一个标签啦。
内容的提问来源于stack exchange,提问作者Rhts
相关产品推荐
相关产品推荐

