Skip to content
当前页

圆环图使用示例(仅供参考)

  • 1.表现形式

  • 2.配置
js
// 接口数据 返回的数据是用于3个圆环图的数据
        const res = {
            data: {
                damaged_mail: {"name":"破损邮件","type":"damaged_mail","value":3},
                abnormal_receiver_mail: {"name":"无着邮件","type":"abnormal_receiver_mail","value":6},
                exception_mail: {"name":"异常邮件","type":"exception_mail","value":56},
                none_message_mail: {"name":"无信息邮件","type":"none_message_mail","value":3},
                other_exception_mail: {"name":"其他异常","type":"other_exception_mail","value":17},
                timeout_2_4h: {"name":"超时2-4h","type":"timeout_2_4h","value":16},
                multiple_round_mail: {"name":"多次往返件","type":"multiple_round_mail","value":2},
                cancel_mail: {"name":"撤单邮件","type":"cancel_mail","value":1},
                timeout_1_2h: {"name":"超时1-2h","type":"timeout_1_2h","value":131},
                timeout_0_1h: {"name":"超时1h内","type":"timeout_0_1h","value":2000},
                obr_reject: {"name":"OBR拒识","type":"obr_reject","value":24},
                timeout_mail: {"name":"超时邮件","type":"timeout_mail","value":4154},
                mail_over_4h: {"name":"超时4h以上","type":"mail_over_4h","value":7}
            }
                
        }
        // 实际用到的数据 显示一个圆环图
        const jsonData =  [
            res.data.none_message_mail,
            res.data.abnormal_receiver_mail,
            res.data.damaged_mail,
            res.data.cancel_mail,
            res.data.multiple_round_mail,
            res.data.other_exception_mail,
        ],
        const returnTotal = (num) => {
            return parseFloat(String(num)).toLocaleString();
        };
        // 图表配置
        option = {
          // backgroundColor: '#0f375f',
          legend: {
            orient: 'vertical',
            selectedMode: false,
            icon: 'rect', //图例形状
            top: '20px',
            right: '20px',
            itemWidth: 28, // 图例标记的图形宽度。[ default: 25 ]
            itemHeight: 14, // 图例标记的图形高度。[ default: 14 ]
            itemGap: 20, // 图例每项之间的间隔。[ default: 10 ]横向布局时为水平间隔,纵向布局时为纵向间隔。
            textStyle: {
              rich: {
                a0: {
                  color: '#bbbbbb',
                  fontSize: 12,
                },
                b0: {
                  color: '#ffffff',
                  fontSize: 12,
                },
              },
            },
            formatter: function (name) {
              let target;
              for (let i = 0; i < jsonData.length; i++) {
                if (jsonData[i].name === name) {
                  target = jsonData[i].value;
                }
              }
              let arr = [
                ' {a0|' + name + '}',
                ' {b0|' + returnTotal(target) + '}' + ' {a0|' + '' + '}',
              ];
              return arr.join();
            },
          },
          title: {
            text: '全部',
            subtext: '问题邮件',
            textAlign: 'center',
            left: '29%',
            top: '40%',
            textStyle: {
              fontSize: 16,
              color: '#ffffff',
            },
            subtextStyle: {
              fontSize: 16,
              color: '#ffffff',
            },
          },

          series: [
            // 主要展示层的
            {
              radius: ['65%', '85%'],
              center: ['30%', '50%'],
              type: 'pie',
              label: {
                show: false,
                position: 'center',
              },
              emphasis: {
                label: {
                  show: false,
                },
              },
              labelLine: {
                show: false,
              },
              color: ['#23d5ff', '#17f2c3', '#fea635', '#fff092', '#e65152', '#437dff'],
              data: jsonData,
            },
            {
              name: '外边框',
              type: 'pie',
              center: ['30%', '50%'],
              radius: ['95%', '95%'],
              label: {
                show: false,
                position: 'center',
              },
              emphasis: {
                label: {
                  show: false,
                },
              },
              labelLine: {
                show: false,
              },
              data: [
                {
                  value: 9,
                  name: '',
                  itemStyle: {
                    borderWidth: 2,
                    borderColor: '#0b5263',
                  },
                },
              ],
            },
            {
              name: '内边框',
              type: 'pie',
              center: ['30%', '50%'],
              radius: ['50%', '50%'],
              label: {
                show: false,
                position: 'center',
              },
              emphasis: {
                label: {
                  show: false,
                },
              },
              labelLine: {
                show: false,
              },
              data: [
                {
                  value: 9,
                  name: '',
                  itemStyle: {
                    borderWidth: 2,
                    borderColor: '#0b5263',
                  },
                },
              ],
            },
          ],
        }