如何在Chart.js v2中格式化x轴时间刻度值

wet*_*osh 44 chart.js

当我将鼠标悬停在折线图上的数据点上时,我可以格式化工具提示options.scales.xAxes.time.tooltipFormat,但我似乎无法为x轴刻度标记执行此操作.我data.labels是一组时刻物体.他们显示为"MMM DD, YYYY"(例如2012年2月23日),但我想放弃这一年.

pot*_*ngs 78

只需将所有选定的时间单位设置displayFormatMMM DD

options: {
  scales: {
    xAxes: [{
      type: 'time',
      time: {
        displayFormats: {
           'millisecond': 'MMM DD',
           'second': 'MMM DD',
           'minute': 'MMM DD',
           'hour': 'MMM DD',
           'day': 'MMM DD',
           'week': 'MMM DD',
           'month': 'MMM DD',
           'quarter': 'MMM DD',
           'year': 'MMM DD',
        }
        ...
Run Code Online (Sandbox Code Playgroud)

请注意,我已将所有单位的显示格式设置为MMM DD.更好的方法是,如果您可以控制数据的范围和图表大小,就会强制一个单位,就像这样

options: {
  scales: {
    xAxes: [{
      type: 'time',
      time: {
        unit: 'day',
        unitStepSize: 1,
        displayFormats: {
           'day': 'MMM DD'
        }
        ...
Run Code Online (Sandbox Code Playgroud)

小提琴 - http://jsfiddle.net/prfd1m8q/

  • 我相信你的第二个代码片段,`unit`和`unitStepSize`应该包含在`time`对象中.[更新了jsfiddle](http://jsfiddle.net/prfd1m8q/1125/).我尝试进行编辑,但它被拒绝了,因为它偏离了你原来的帖子意图...... (2认同)
  • 如果 var 是一个字符串(例如“2021-03-10”),而不是像“moment”时间对象这样易于管理的对象,您最好通过添加“parser”来告诉“jschart”如何解析该字符串: 'YYYY-MM-DD'` 到 `time` 方法。总的来说,脚本看起来像 type: 'time', time: { parser: 'YYYY-MM-DD', unit: 'day', unitStepSize: 1, displayFormats: {'day': 'MMM DD',} } (2认同)

小智 19

根据Chart js文档页面的tick配置部分.您可以使用回调函数格式化每个tick的值.例如,我想将显示日期的区域设置更改为始终为德语.在轴选项的刻度部分

ticks: {
    callback: function(value) { 
        return new Date(value).toLocaleDateString('de-DE', {month:'short', year:'numeric'}); 
    },
},
Run Code Online (Sandbox Code Playgroud)