Echart圆环图

使用一个Echart显示多个圆环图,中间显示统计总数

option = {
  legend: {
    textStyle: {
      color: '#fff',
    }
  },
  title: [{
    text: '系统1',
    textStyle: {
      color: '#fff',
      // fontWeight: 'bold',
      fontSize: 14
    },
    subtext: '总金额(万):157',
    subtextStyle: {
      color: 'red',
      fontSize: 12,
      // fontWeight: 'bold'
    },
    textAlign: 'center',
    left: '16%',
    top: '57%'
  },{
    text: '系统2',
    textStyle: {
      color: '#333',
      // fontWeight: 'bold',
      fontSize: 14
    },
    subtext: '总金额(万):157',
    subtextStyle: {
      color: 'red',
      fontSize: 12,
      // fontWeight: 'bold'
    },
    textAlign: 'center',
    left: '50%',
    top: '57%'
  },{
    text: '系统3',
    textStyle: {
      color: '#333',
      // fontWeight: 'bold',
      fontSize: 14
    },
    subtext: '总金额(万):157',
    subtextStyle: {
      color: 'red',
      fontSize: 12,
      // fontWeight: 'bold'
    },
    textAlign: 'center',
    left: '83%',
    top: '57%'
  }],
  series: [
    {
      type: 'pie',
      center: ['16%', '60%'],
      avoidLabelOverlap: true,
      data: [
        {
          value: 4.9,
          name: '工具'
        },
        {
          value: 21.7,
          name: '耗材'
        },
        {
          value: 118.9,
          name: '配件'
        },
        {
          value: 3.4,
          name: '化学品'
        },
        {
          value: 1.1,
          name: '杂项'
        },
        {
          value: 6.2,
          name: '治具'
        },
        {
          value: 0.8,
          name: '其它'
        }
      ],
      radius: ['30%', '40%'],
      label: {
        show: true,
        formatter: function(val) {
          //让series 中的文字进行换行
          // return val.name + "\n(" + val.percent + "%)";
          // return val.percent + "%";
          return val.value + "万" + "\n(" + val.percent + "%)";
        }
      }
    },
    {
      type: 'pie',
      center: ['50%', '60%'],
      avoidLabelOverlap: true,
      data: [],  // 系统没有相关数据
      radius: ['30%', '40%'],
      label: {
        show: true,
        formatter: function(val) {
          //让series 中的文字进行换行
          // return val.name + "\n(" + val.percent + "%)";
          return val.value + "万" + "\n(" + val.percent + "%)";
        }
      },
      
    },
    {
      type: 'pie',
      center: ['83%', '60%'],
      avoidLabelOverlap: true,
      data: [
        {
          value: 4.9,
          name: '工具'
        },
        {
          value: 21.7,
          name: '耗材'
        },
        {
          value: 118.9,
          name: '配件'
        },
        {
          value: 3.4,
          name: '化学品'
        },
        {
          value: 1.1,
          name: '杂项'
        },
        {
          value: 6.2,
          name: '治具'
        },
        {
          value: 0.8,
          name: '其它'
        }
      ],
      radius: ['30%', '40%'],
      label: {
        show: true,
        formatter: function(val) {
          //让series 中的文字进行换行
          // return val.name + "\n(" + val.percent + "%)";
          // return val.percent + "%";
          return val.value + "万" + "\n(" + val.percent + "%)";
        }
      }
    }
  ],
  tooltip: {
    trigger: "item",
    formatter: "{b}: {c} ({d}%)"
  },
};

如果一行内要显示的圆环图个数不确定,可以参考下面的位置,一行画1~5个,根据圆环个数确定位置

function getPiePosition(pieCnt, withSubtitle) { // withSubtitle = true,需要返回top小一些
    let positionObj = {
        left: ['50%'],
        top: withSubtitle ? '52%' : '60%',
    }
    switch(pieCnt) {
        case 1:
            break;
        case 2:
            positionObj.left =  ['25%', '75%'];
            break;
        case 3: 
            positionObj.left = ['16%', '50%', '83%'];
            break;
        case 4: 
            positionObj.left = ['13%', '37%', '63%', '84%'];
            break;
        case 5:
            positionObj.left = ['12%', '32%', '50%', '68%', '88%'];
            break;
        default:
            break;
    }
    return positionObj;
}

示例:


pie-borderRadius.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。