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

AM5热力图自定义多段颜色范围函数失效问题排查求助

AM5热力图自定义颜色规则失效排查步骤

1. 确认偏差值计算逻辑正确

首先检查偏差百分比的计算是否符合预期,正确的偏差公式应为:

// 偏差 = (实际值 - 基线值) / 基线值 * 100%
item.deviation = ((item.value - item.movingAvg) / item.movingAvg) * 100;
  • 避免除以实际值的错误,这会导致偏差计算完全偏离预期
  • 确保计算后的值为百分比格式(如+25代表20%以上,-30代表20%以下)

2. 检查热力图的valueField绑定

热力图的valueField必须绑定到计算后的偏差值字段,而非原始数值:

// 错误写法
valueField: "value"

// 正确写法
valueField: "deviation"

若绑定错误,colorRules的条件判断会基于原始数值,无法触发正确的颜色规则。

3. 调整颜色规则的判断顺序

AM5的colorRules按顺序匹配,满足条件后会停止后续判断。正确顺序应先处理极端区间,最后覆盖中间区间:

colorRules: [
  // 先匹配正偏差极端值(≥20%)
  {
    condition: dataItem => dataItem.dataContext.deviation >= 20,
    fill: am5.LinearGradient.new(root, {
      stops: [{ color: "#a5d6a7" }, { color: "#2e7d32" }],
      rotation: 0 // 可根据需求调整渐变方向
    })
  },
  // 再匹配负偏差极端值(≤-20%)
  {
    condition: dataItem => dataItem.dataContext.deviation <= -20,
    fill: am5.LinearGradient.new(root, {
      stops: [{ color: "#ef9a9a" }, { color: "#c62828" }],
      rotation: 0
    })
  },
  // 最后处理中间区间(无需condition,默认匹配剩余情况)
  {
    fill: am5.LinearGradient.new(root, {
      stops: [{ color: "#ffe082" }, { color: "#f57f17" }],
      rotation: 0
    })
  }
]

若将中间区间规则放在前面,会导致极端值被覆盖,无法触发对应的渐变颜色。

4. 验证渐变颜色配置

确保LinearGradient的stops配置无误:

  • 颜色值使用有效的十六进制、RGB或颜色名称
  • rotation参数控制渐变方向(0=水平,90=垂直)
  • 确认渐变对象通过am5.LinearGradient.new()正确创建,无语法错误

5. 检查数据传入有效性

初始化热力图前,打印data数组确认每个item的deviation值是否符合预期:

console.log(data); // 查看每个item的deviation是否为正确的百分比数值

若数据中deviation为空、NaN或计算错误,颜色规则无法正常触发。

6. 确认规则未被覆盖

确保colorRules直接赋值给热力图实例,未被后续代码覆盖:

const heatmap = am5heatmap.Heatmap.new(root, {
  // ...其他配置
  colorRules: [/* 你的规则 */]
});

若后续存在修改heatmap.colorRules的代码,会覆盖初始配置导致规则失效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:18:26