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

如何设置ECharts仪表盘Tooltip背景色与指针数值颜色一致?

实现ECharts仪表盘Tooltip背景色与指针指向数值颜色一致

要实现这个需求,核心是根据当前仪表盘的数值匹配对应轴分段颜色,再动态设置Tooltip背景色,具体实现步骤如下:

1. 编写颜色匹配函数

根据你提供的axisLine.color分段规则,编写函数判断当前数值对应的有效颜色:

function getTooltipBgColor(value) {
  // 与你配置的轴颜色分段完全对应
  const colorSegments = [
    [0.27, '#e76262'],
    [0.3, 'transparent'],
    [0.52, '#f9cf4a'],
    [0.55, 'transparent'],
    [0.77, '#eca336'],
    [0.8, 'transparent'],
    [1, '#3ece80'],
  ];
  
  // 遍历分段,跳过透明区间,匹配数值对应的颜色
  for (let i = 0; i < colorSegments.length; i += 2) {
    const endRatio = colorSegments[i + 1][0];
    if (value <= endRatio) {
      return colorSegments[i][1];
    }
  }
  // 默认返回最后一段颜色
  return colorSegments[colorSegments.length - 1][1];
}

2. 修改Tooltip配置

将tooltip.backgroundColor设置为接收params参数的函数,调用上面的匹配函数返回对应颜色:

tooltip: {
  trigger: "item",
  // 动态匹配背景色
  backgroundColor: function(params) {
    return getTooltipBgColor(params.value);
  },
  // 可选:设置文本颜色确保可读性(根据背景色调整)
  textStyle: {
    color: '#fff'
  }
},

完整修改后的配置示例

// 颜色匹配函数
function getTooltipBgColor(value) {
  const colorSegments = [
    [0.27, '#e76262'],
    [0.3, 'transparent'],
    [0.52, '#f9cf4a'],
    [0.55, 'transparent'],
    [0.77, '#eca336'],
    [0.8, 'transparent'],
    [1, '#3ece80'],
  ];
  
  for (let i = 0; i < colorSegments.length; i += 2) {
    const endRatio = colorSegments[i + 1][0];
    if (value <= endRatio) {
      return colorSegments[i][1];
    }
  }
  return colorSegments[colorSegments.length - 1][1];
}

option = {
  tooltip: {
    trigger: "item",
    backgroundColor: function(params) {
      return getTooltipBgColor(params.value);
    },
    textStyle: {
      color: '#fff'
    }
  },

  series: [
    {
      type: "gauge",
      startAngle: 180,
      endAngle: 0,
      center: ["50%", "60%"],
      radius: "100%",
      min: 0,
      max: 1,
      splitNumber: 8,
      axisLine: {
        roundCap: true,
        Gap: '100%',
        lineStyle: {
          width: 13,
          color: [
            [0.27, '#e76262'],
            [0.3, 'transparent'],
            [0.52, '#f9cf4a'],
            [0.55, 'transparent'],
            [0.77, '#eca336'],
            [0.8, 'transparent'],
            [1, '#3ece80'],
          ],
        },
      },
      // 你的其他仪表盘配置...
    },
  ]
};

说明

  • 函数会自动跳过透明分段,精准匹配数值对应的轴颜色;
  • 后续如果修改axisLine.color的分段规则,只需同步更新colorSegments数组即可;
  • 文本颜色可根据背景色灵活调整,避免出现文字与背景对比度不足的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:21:23