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

VictoryAxis绑定自定义日期数据无变化 始终显示1月1日问题求助

Victory双坐标轴日期刻度固定显示1 jan问题解决方案

问题原因

VictoryAxis 单独配置 data 属性不会被用于自动计算坐标轴值域,默认x轴值域起始值为0,转换为日期类型即为1970年1月1日,所以所有刻度格式化后都会显示为1 jan。

解决步骤

  1. 手动指定x轴值域
    给VictoryAxis添加domain属性,值设为你日期数据的最小、最大日期区间即可:
// 可以直接从现有date数组中提取值域
const xMin = Math.min(...date.map(item => item.x));
const xMax = Math.max(...date.map(item => item.x));

<VictoryAxis
  crossAxis={true}
  tickCount={12}
  domain={{x: [xMin, xMax]}}
  data={date}
  tickFormat={(x) => {
    return x.toLocaleString("vn-vn", {
      month: "short",
      day: "numeric"
    });
  }}
/>
  1. 如果要精准显示你预设的所有日期刻度
    额外添加tickValues属性,直接指定刻度值为你date数组中的所有日期,避免Victory自动生成刻度:
<VictoryAxis
  crossAxis={true}
  tickValues={date.map(item => item.x)}
  domain={{x: [xMin, xMax]}}
  data={date}
  tickFormat={(x) => {
    return x.toLocaleString("vn-vn", {
      month: "short",
      day: "numeric"
    });
  }}
/>
  1. 更适配双轴图的通用方案
    把所有绘图数据统一绑定到外层的VictoryChart组件的data属性上,Victory会自动计算所有关联坐标轴的合理值域,无需单独给VictoryAxis手动配置domain。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:09:00