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

在ngx-echarts中如何配置图例未激活状态的自定义图标?

解决ngx-echarts图例激活/未激活状态用不同复选框图标问题

首先纠正你代码里的一个小错误:legend.data必须是数组格式,不能写成重复的data对象属性(否则后面的配置会覆盖前面的),正确的基础配置结构如下:

this.chartOption = {
  legend: {
    data: [
      {
        name: 'serie1',
        // 选中状态的复选框SVG路径
        icon: 'path://m419-321 289-290-43-43-246 247-119-119-43 43 162 162ZM180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Z'
      },
      {
        name: 'serie2',
        icon: 'path://m419-321 289-290-43-43-246 247-119-119-43 43 162 162ZM180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Z'
      }
    ]
  },
  // 其他图表配置(xAxis、yAxis、series等)
};

ECharts官方确实没有提供inactiveIcon这类直接配置未激活状态图标的参数,但可以通过监听图例选择事件+动态修改图标的方式实现需求:

具体实现步骤

  1. 预先定义两种状态的复选框SVG路径:
// 选中状态的复选框路径
const checkedIconPath = 'path://m419-321 289-290-43-43-246 247-119-119-43 43 162 162ZM180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Z';
// 未选中状态的空心复选框路径(可根据需求替换成自己的SVG路径)
const uncheckedIconPath = 'path://m180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Zm0-60h600v-600H180v600Z';
  1. 获取ECharts实例并监听选择事件:
    假设你的模板代码是:
<div echarts [options]="chartOption" (chartInit)="onChartInit($event)"></div>

在组件类中实现事件监听和图标切换逻辑:

private chartInstance: any;

onChartInit(instance: any) {
  this.chartInstance = instance;
  // 监听图例选中状态变化事件
  this.chartInstance.on('legendselectchanged', (params: any) => {
    // 遍历图例数据,根据选中状态替换对应图标
    const updatedLegendData = this.chartOption.legend.data.map((item: any) => ({
      ...item,
      icon: params.selected[item.name] ? checkedIconPath : uncheckedIconPath
    }));
    // 更新图表配置
    this.chartInstance.setOption({
      legend: {
        data: updatedLegendData
      }
    });
  });
}
  1. 可选:初始化时设置默认未选中的系列图标
    如果有默认未选中的系列,初始化时直接将其icon设为uncheckedIconPath即可。

原理说明

通过监听图例的legendselectchanged事件,每次用户点击切换选中状态时,动态修改对应系列的icon参数,再调用setOption更新图表,就能实现激活/未激活状态显示不同复选框图标的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:37:07