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

ChartJS xAxis时间格式几天不变

姚鹤龄
2023-03-14

我有一张ChartJS图表,及时显示数据。

我使用以下时间格式:

displayFormats: {
  millisecond: 'mm:ss',
  second: 'mm:ss',
  minute: 'HH:mm',
  hour: 'HH:mm',
  day: 'MMM DD',
  week: 'MMM DD',
  month: 'YYYY MMM',
  quarter: 'YYYY MMM',
  year: 'YYYY',
}

我让用户从多个选项中选择:

  • 最后一小时
  • 最后一天
  • 上个星期
  • 上个月

现在,虽然我确实理解了为什么它会这样做(它需要大量的标签,而且标签比天多,所以它需要几个小时),但我不确定如何修复它。

我想在一周内让它显示day格式。有没有办法用ChartJS实现这一点?

我不确定这是否有帮助,但我为每个屏幕显示的数据点数量各不相同,可以是5000-50000,而且事先也不知道。

额外的是,由于它创建了大量的步骤,有时会在右边的标签上创建一个标签,这非常烦人。有办法解决这个问题吗?

共有1个答案

狄阳华
2023-03-14

可以使用< code>unit属性强制xAxis使用您想要的单位。例如,如果您希望它以天数而不是小时数来显示,您可以使用如下配置:

var chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        scales: {
            xAxes: [{
                time: {
                    unit: 'day',
                    displayFormats: {
                        day: 'MMM DD' 
                    }
                }
            }]
        }
    }
});

另一种选择是使用minUnit而不是Unit。这将确保您的图形更好地扩展,因为它将限制要使用的最低显示格式,同时在需要时仍然可以灵活地使用更大的格式。

关于重叠标签问题,调整unitStepSize属性可能会有所帮助。

更多信息请参阅 ChartJS 文档的时间单位部分

 类似资料:
  • 设定使用12小时制或24小时制。

  • For %U, all days in a new year preceding the first Sunday are considered to be in week 0. For %W, all days in a new year preceding the first Monday are considered to be in week 0. In some implementati

  • 格式化时间 timeFormat | date(timestamp, format = "yyyy-mm-dd") 注意:1.7.9之前的版本只能传入秒或毫秒时间戳,date和timeFormat为同功能不同名函数,无论用哪个方法名,都是一样的。 该函数必须传入第一个参数,第二个参数是可选的,函数返回一个格式化好的时间。 time <String> 任何合法的时间格式、秒或毫秒的时间戳 forma

  • 问题内容: 如何在几天,几小时,几周或几个月后迭代一个时间跨度? 就像是: 其中foo是一个函数,返回一个迭代器。我一直在研究日历模块,但是它仅适用于特定的一年或一个月,不适用于日期之间。 问题答案: 使用dateutil及其rrule实现,如下所示: 输出为 将“每月”替换为“每年”,“每月”,“每周”,“每天”,“每小时”,“半年”或“第二”。替换dtstart,直到您想要的任何datetim

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y

  • 下表显示可用于为图表中的日期时间字段创建用户定义的数据格式的说明符。 说明符 描述 D 将日显示为不带前导零的数字(1-31)。 DD 将日显示为带前导零的数字(01-31)。 M 将月份显示为不带前导零的数字(1-12)。 MM 将月份显示为带前导零的数字(01-12)。 MMM 将月份显示为缩写形式(Jan-Dec)。 MMMM 将月份显示为完整月份名(January-December)。 Y