You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chart.js图表未显示全部数据点求助:3个数据点仅显示2个

解决Chart.js折线图仅显示部分时间数据点的问题

嘿,我一眼就揪出问题所在啦!你用了带时间维度的数据点,但没明确告诉Chart.js你的x轴是时间轴类型,导致它没法正确解析并渲染全部数据。

问题根源

你的数据集里用了t(时间)+y(数值)的对象格式,但默认情况下Chart.js的x轴是线性轴——它会把时间对象转成时间戳数值来处理。由于第三个数据点(4月27日)和前两个(4月1日、4月10日)的时间间隔较大,超出了默认计算的轴范围,所以这个点就被“藏”起来了。

解决方案

只需要在options的scales里添加x轴配置,明确指定x轴类型为time,同时确保你的项目引入了对应依赖(Chart.js 2.x版本需要引入moment.js,3+版本内置了时间处理模块)。

修改后的完整代码如下:

var ctx = document.getElementById("myChart"); 
var myChart = new Chart(ctx, { 
  type: 'line', 
  data: { 
    datasets: [{ 
      label: 'Submission', 
      data: [
        { t: new Date("April 1, 2018"), y: 2 }, 
        { t: new Date("April 10, 2018"), y: 1 }, 
        { t: new Date("April 27, 2018"), y: 1 }
      ], 
      backgroundColor: ["rgba(90, 150, 200, 0.6)"] 
    }] 
  }, 
  options: { 
    scales: { 
      xAxes: [{
        type: 'time', // 明确指定x轴为时间轴
        time: {
          unit: 'day', // 按天显示刻度,可选week、month等
          displayFormats: {
            day: 'MMM D' // 自定义日期显示格式,比如"Apr 1"
          }
        }
      }],
      yAxes: [{ 
        ticks: { beginAtZero: true } 
      }] 
    } 
  } 
});

额外小贴士

如果是Chart.js 3.x及以上版本,配置写法略有调整,scales下的xAxes和yAxes要改成x和y,示例如下:

scales: {
  x: {
    type: 'time',
    time: { /* 时间轴配置项 */ }
  },
  y: {
    beginAtZero: true
  }
}

内容的提问来源于stack exchange,提问作者adammoyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:22:00