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

morris.js折线图X轴显示异常求助:需改为Day 1样式

嘿,这个问题我之前用Morris.js做图表的时候也踩过坑!

问题根源

你遇到的X轴显示异常,是因为Morris.js默认会把x字段的值当作日期时间来解析。当你传入'1'、'2'这类数字字符串时,它会自动将其映射到1900年1月的对应天数(Morris的默认日期基准是1900年),所以才会出现带190前缀的奇怪标签。

解决方法

推荐用下面第一种方案,更贴合你的数据场景:

方案1:禁用日期解析 + 自定义X轴标签

直接告诉Morris不要把x值当成日期处理,同时自定义X轴的显示格式为Day 1、Day 2...:

// 假设你原来的图表初始化代码是这样的,添加关键配置即可
Morris.Line({
  element: 'your-chart-container-id', // 替换成你的图表容器ID
  data: DataForChart1,
  ykeys: ['a'],
  labels: ['你的数据标签'], // 替换成你的实际标签文本
  // 关键配置1:禁用自动日期解析
  parseTime: false,
  // 关键配置2:自定义X轴标签格式
  xLabelFormat: function(x) {
    // x.index从0开始计数,加1得到Day 1、Day 2...
    return 'Day ' + (x.index + 1);
  }
});

方案2:强制格式化日期标签(不推荐)

如果你非要保留默认的日期解析逻辑(其实没必要,因为你的x值不是真实日期),也可以通过格式化函数提取天数:

Morris.Line({
  // 其他配置项不变
  xLabelFormat: function(x) {
    // x是解析后的日期对象,取日期部分
    var dayNum = x.getDate();
    return 'Day ' + dayNum;
  }
});

小提示

优先用方案1,因为你的x字段本质是天数序号,不是日期,禁用日期解析更符合数据逻辑,也能避免后续可能出现的其他日期解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:10:07