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

如何为ApexChart散点图重复坐标点添加固定偏移避免重叠?

实现思路

你当前筛选重复项的方法无法获取单个重复点在同值分组内的顺序,没办法生成固定偏移。建议先对所有(x,y)相同的点做分组计数,再根据每个点在组内的索引计算固定偏移,仅需一次遍历即可完成处理,时间复杂度为O(n)。

完整实现代码

// 用于记录每个(x,y)分组的出现次数
const pointCountMap = new Map();
// 处理后的数据,不直接修改原数组避免污染
const processedChartData = AllItems.map(item => {
  // 生成同值分组的唯一标识
  const groupKey = `${item.x},${item.y}`;
  // 获取当前分组已处理的点数,初始为0
  const groupIndex = pointCountMap.get(groupKey) || 0;
  // 更新分组计数
  pointCountMap.set(groupKey, groupIndex + 1);

  let xOffset = 0;
  // 第1-3个重复点(组内索引1/2/3)依次加0.05
  if (groupIndex >= 1 && groupIndex <= 3) {
    xOffset = 0.05 * groupIndex;
  } 
  // 第4-6个重复点(组内索引4/5/6)依次减0.05
  else if (groupIndex >=4 && groupIndex <=6) {
    xOffset = -0.05 * (groupIndex - 3);
  }
  // 超过7个的重复点偏移为0,保留原始值

  // 返回处理后的新数据项
  return {
    ...item,
    x: Number(item.x) + xOffset
  }
})

处理完成后直接把processedChartData传入ApexChart即可,只要原数据的顺序不变,每个点的偏移量就固定,不会出现刷新后位置变动的问题。

效果验证

和你给出的规则完全匹配:

  • 组内索引0(第一个原始点):x偏移0,值为10
  • 组内索引1:x偏移0.05,值为10.05
  • 组内索引2:x偏移0.1,值为10.1
  • 组内索引3:x偏移0.15,值为10.15
  • 组内索引4:x偏移-0.05,值为9.95
  • 组内索引5:x偏移-0.1,值为9.9
  • 组内索引6:x偏移-0.15,值为9.85
  • 组内索引≥7:x偏移0,保留原始值10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:24:04