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

Recharts散点图同坐标数据未重叠,横向堆叠问题求助

解决Recharts散点图同坐标点不重叠的问题

问题核心

相同日期(如8月3日)和Y轴计数的数据点没有重合在同一坐标,反而横向分散,本质是X轴未正确识别为时间轴,且日期数据格式不符合Recharts的时间处理要求。

解决步骤

  • 设置X轴为时间类型
    在XAxis组件中添加type="number"(或type="time"),让同日期的点映射到同一X坐标:

    <XAxis
      dataKey="receipt_date"
      type="number"
      tickFormatter={(timestamp) => dateFormatter(new Date(timestamp))}
    />
    
  • 统一日期数据格式
    把原始日期转换成毫秒时间戳,确保Recharts能正确解析:

    // 处理数据:将receipt_date转为时间戳
    const processedData = seqData.map(item => ({
      ...item,
      receipt_date: new Date(item.receipt_date).getTime()
    }));
    

    之后将processedData传给ScatterChart的data属性。

  • 清理Scatter组件冗余配置
    去掉Scatter组件的type="monotone",这个属性是折线图专用,对散点图无效还可能干扰定位:

    <Scatter
      dataKey="yCounter"
      fillOpacity="0.6"
    />
    

修改后的完整代码示例

<ResponsiveContainer width="100%" height="100%">
  <ScatterChart
    data={processedData} // 传入处理后的时间戳数据
    margin={{ top: 5, right: 30, left: 20, bottom: 5 }}
  >
    <CartesianGrid strokeDasharray="3 3" />
    <XAxis
      dataKey="receipt_date"
      type="number"
      tickFormatter={(timestamp) => dateFormatter(new Date(timestamp))}
    />
    <YAxis />
    <Tooltip />
    <Legend />
    <Scatter dataKey="yCounter" fillOpacity="0.6" />
  </ScatterChart>
</ResponsiveContainer>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:10:21