为什么Chart.js V2基于时间的数据无法正确与X轴对齐



使用Chart.js显示基于时间的数据时,数据本身似乎与X轴标签不符。例如,当数据用于2016-11-30时,该标准实际上在12月显示。一系列日期的最后日期甚至都没有在图表上显示。我如何使它们正确对齐?

$(document).ready(function(){
    var config = {
        type: 'bar',
        data: {
            labels: [
        '2016-11-30', // Why showing in December?
        '2017-04-01', // Why not showing in beginning of April?
        '2017-06-30'], // Why not showing?
            datasets: [{
                label: 'Contacts',
                backgroundColor: 'red',
                data: [
          1,
          5,
          7
        ]
            }]
        },
        options: {
            scales: {
                yAxes: [{
                    ticks: {
                        beginAtZero:true,
                        stepSize:1
                    }
                }],
                xAxes: [{
                    type: 'time',
                    barThickness:2,
                    time: {
                        unit: 'month'
                    }
                }]
            }
        }
    };
    var Canvas = $("#Chart");
    var cc = new Chart(Canvas, config);
});

codepen上的示例:https://codepen.io/skunkbad/pen/embjma

关于错误日期显示的显示:

这是因为您如何实例化日期对象及其与时区的关系,您的浏览器可能正在将其解决到您的时区,并且您将获得另一个值。

我在GMT-3上,例如:

$ new Date('2016-11-30')
- Tue Nov 29 2016 21:00:00 GMT-0300 (BRT)
$ new Date(2016, 11, 30)
- Fri Dec 30 2016 00:00:00 GMT-0300 (BRT)

关于未显示最后数据:

绘制了栏,但没有可见位置。可以在此jsfiddle上验证这一点(不确定为什么不在codepen上(,如果将鼠标移至屏幕边缘,标签将出现。

这是一个已知问题,正在此处跟踪:#2415

如果可能的话,我认为最简单的解决方法是在您的时间尺度上手动定义 max属性

最新更新