我的项目场景:

echart的环形图表中legend配置项中存在多个反复数据,页面展现的时候合并为一个数据展现了

例如:多个同名业务类型,然而key值不同,须要将所有业务类型都展现。


问题形容

开发中遇到业务类型名称不惟一状况,存在多个业务类型同名然而key值不同,此处多个业务类型应该通过不同色彩将所有类型名都展现,然而理论展现是同名业务类型合并为同一名称,并且色彩雷同。

例如:
图表初始化数据代码:

drawChannelChart() {      // 基于筹备好的dom,初始化echarts实例      this.channelChart = echarts.init(document.getElementById("channelChart"));      // 绘制图表      this.channelChart.setOption({        title: {          text: "总数",          //副标题          subtext: this.channelTotal || "0",          // 主副标题间距          itemGap: 15,          x: "center",          y: "center",          // x:'17%',          //  y:'12%',          top: "170",          //主题目款式          textStyle: {            fontSize: "18",            color: "#CCCCCC"          },          //副标题款式          subtextStyle: {            fontSize: "35",            fontWeight: "800",            color: "#555"          }        },        tooltip: {          trigger: "item"        },        legend: {          top: "95%",          left: "center",          // left: '10%',          icon: "circle",        },        series: [          {            name: "",            type: "pie",            radius: ["40%", "70%"],            avoidLabelOverlap: false,            label: {              show: false,              position: "center"            },            emphasis: {              label: {                show: false,                fontSize: "40",                fontWeight: "bold"              }            },            labelLine: {              show: false            },            data:  [                {                    "key": "1",                    "name": "超高清",                    "value": 3                },                {                    "key": "2",                    "name": "低时延",                    "value": 1                },                {                    "key": "3",                    "name": "低时延",                    "value": 2                },            ]          }        ]      });    },

起因剖析:

需要要求,之前没有留神到这方面的问题。

解决方案:

通过legend和tooltip属性的formatter属性值来批改对雷同name值数据的展现问题。

首先在获取到数据的时候,对数据进行解决

channelTypes.forEach((element, i) => {   let obj = {};   obj.value = element.num || 0;   obj.name = element.value+ element.key;//应用原来的name值+key值作为name惟一的标识   obj.text = element.value;//预计的展现名称   obj.key = element.key;   this.channelData.push(obj); });

其次初始化图表设置

drawChannelChart() {    // 基于筹备好的dom,初始化echarts实例    this.channelChart = echarts.init(document.getElementById("channelChart"));    // 绘制图表    this.channelChart.setOption({      title: {        text: "总数",        //副标题        subtext: this.channelTotal || "0",        // 主副标题间距        itemGap: 15,        x: "center",        y: "center",        // x:'17%',        //  y:'12%',        top: "170",        //主题目款式        textStyle: {          fontSize: "18",          color: "#CCCCCC"        },        //副标题款式        subtextStyle: {          fontSize: "35",          fontWeight: "800",          color: "#555"        }      },      tooltip: {        trigger: "item",        //此处是针对于批改后数据展现做批改,否则鼠标移上展现的数据是名称+key值        formatter:(params)=>{          let content = ``;          let name = this.channelData.find((v) => v.name === params.name).text;          content = `<div><span> ${name}</span>:<span>${params.value}</span></div>`;          return content;        }      },      legend: {        top: "95%",        left: "center",        // left: '10%',        icon: "circle",        show:true,        //此处是针对于批改后数据展现做批改,否则鼠标移上展现的数据是名称+key值        formatter:(name)=>{          let showText = this.channelData.find((v)=>v.name===name).text;          return showText;        }      },      series: [        {          name: "",          type: "pie",          radius: ["40%", "70%"],          avoidLabelOverlap: false,          label: {            show: false,            position: "center"          },          emphasis: {            label: {              show: false,              fontSize: "40",              fontWeight: "bold"            }          },          labelLine: {            show: false          },          data: [            {                "key": "1",                "name": "超高清1",                "text":"超高清",                "value": 3            },            {                "key": "2",                "name": "低时延2",                "text": "低时延",                "value": 1            },            {                "key": "3",                "name": "低时延3",                "text": "低时延",                "value": 2            },        ]        }      ]    });  },

重点批改局部