当前位置: 首页 > 知识库问答 >
问题:

为什么Chart.jsv2基于时间的数据不能与X轴正确对齐?

尹庆
2023-03-14

当使用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);

});

代码笔示例:https://codepen.io/skunkbad/pen/EmBJMa

共有1个答案

东郭臻
2023-03-14

关于在错误的日期显示:

这是因为你如何实例化一个日期对象,以及它与时区的关系,你的浏览器可能会将它解析到你的时区,你会得到一个不同的值。

我在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)

关于不显示最新数据:

条形图已打印,但不在可见位置。可以在JSIDLE上验证这一点(不确定为什么不在codepen上),如果您将鼠标移动到屏幕的边缘,标签将出现。

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

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

 类似资料:
  • 为什么数学模块返回错误的结果? 结果 在这里,结果是正确的。 结果 这里的结果是不正确的。 为什么会这样呢?

  • 我已经为基于数组的队列编写了一个代码。它的行为非常奇怪,就像我使用for循环将0,1,2,3,4排队一样,但是插入队列的是0,0,1,2,3。 另外,出列时会抛出,我不知道为什么。 我使用的排队逻辑是,我把元素放在一个简单的数组中。额外的一点是,如果大小接近容量的一半,我会增加数组的容量。 对于出列,如果大小小于容量的三分之一,我将减小容量。我还为popped保留了一个计数器,它从数组的开头弹出元

  • 我有以下功能: 此代码给出了

  • 所以,我正在为一个班级做这个作业。这是一个Java类,我应该做一个游戏,它掷两个骰子,把它们相加,然后把它们加到你的回合分数上。然后它会问你是否想继续玩下去。当你的轮次得分达到20分,或者当你决定通过时,它会进入电脑。它应该打印每个回合的分数,然后当有人得到100分时,它就会宣布胜利者。然而,不管怎样,无论我跑了多少圈,每一圈结束时的分数都是0。当一名玩家掷1时,他们的回合分数被取消,并转移到另一

  • 问题内容: 考虑以下示例: 我不确定Java语言规范中是否有一项规定要加载变量的先前值以便与右侧()进行比较,该变量应按照方括号内的顺序进行计算。 为什么第一个表达式求值,而第二个表达式求值?我本来希望先被评估,然后再与自身()比较并返回。 这个问题与Java表达式中子表达式的求值顺序不同,因为这里绝对不是“子表达式”。需要 加载 它以进行比较,而不是对其进行“评估”。这个问题是特定于Java的,

  • 本文向大家介绍js为什么不能正确处理小数运算?,包括了js为什么不能正确处理小数运算?的使用技巧和注意事项,需要的朋友参考一下 上面的程序会输出1吗? 在 你有必要知道的 25 个 JavaScript 面试题 一文中,第 8 个题浅显的说了下 js 为什么不能正确处理小数运算的问题。今天重拾旧题,更深层次的剖析下这个问题。 但要先说明的是,不能正确处理小数的运算并不是 JavaScript 语言