像仪表盘的圆饼图

描述:当前是关于Echarts图表中的 饼图 示例。
 
            let echartData = {
    outer: [
        {
            value: 6,
            name: '在线'
        },
        {
            value: 1,
            name: '离线'
        },
        {
            value: 3,
            name: '闲置'
        },
         {
            value: 4,
            name: '未知'
        },
        {
            value: 4.9 // 这个需要计算总值的35%
            // itemStyle: placeHolderStyle,
        },
    ]
}

let valueObj = {
    '在线': 6,
    '离线': 1,
    '闲置': 3,
    '未知': 4
}


// 获取图例数据
var arrName = getArrayValue(echartData.outer , "name");

function getArrayValue(array, key) {
    key = key || "value";
    var res = [];
    if (array) {
        array.forEach(function(t) {
            res.push(t[key]);
        });
    }
    return res;
}

function fontSize(res){ // 用来计算font-szie

  let docEl = document.documentElement,

    clientWidth = window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;

  if (!clientWidth) return;

  let fontSize = 2.5 * (clientWidth / 1920);

  return res*fontSize;

}


option = {
    backgroundColor: "#ffffff",
     title: {
         text: 14,
         subtext: 'Total',
         textStyle: {
             color: '#2F396C',
             fontSize: fontSize(32),
         },
         subtextStyle: {
             fontSize: fontSize(25),
             color: '#8494A7',
         },
        top: '48.5%',
        left: "49%",
        textAlign:'center',
        textVerticalAlign: 'bottom'
     },
    tooltip: {
        trigger: 'item',
        formatter: function(params) {
            if (params.name === '') return ''
            return params.seriesName + '<br/>'
            + params.name + ': ' +  params.value
            + ' (' + (params.percent * 1.35).toFixed(2) + '%)'
            // 乘以1.35是因为有35%用于留白,其实总数没有这么多
        }
        // formatter: "{a} <br/>{b}: {c} ({d}%)"
    },
    color: [new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
                offset: 0,
                color: '#3ADA8A'
            }, {
                offset: 1,
                color: '#26C5FE'
            }])
        , '#FF5B5C', '#FFA666', '#CCCCCC', 'rgba(0,0,0,0)'],
    legend: { // 右侧注释
        show: true,
        top: "center",
        left: '80%',
        data: arrName,
        itemWidth: 20,
        itemHeight: 20,
        padding: [0, 5],
        itemGap: 25,
        textStyle: {
            color: '#b0b9cb'
        },
        formatter: function(name) {
            return name + '    ' + valueObj[name]
            // return "{title|" + name + "}\n{value|" + (objData[name].value) + "人}"
        },
    },
    series: [
        {
            name: '外环',
            type: 'pie',
            zlevel: 2,
            radius: ['47%', '51%'],
            center: ["50%", "50%"],
            startAngle: 225,
            data: echartData.outer,
            label: {
                normal: {
                    show: false
                },
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            itemStyle: { // 此配置
                normal: {
                    borderWidth: 2,
                    borderColor: '#fff',
                }
            },
        },
        { //中环半灰半白环
            name: '中环半灰半白环',
            type: 'pie',
            zlevel: 2,
            silent: true,
            radius: ['30%', '47%'],
            center: ["50%", "50%"],
            hoverAnimation: false,
            color: ['#F5F4F9', '#ffffff'],
            startAngle: 225,
            label: {
                normal: {
                    show: false
                },
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            itemStyle:{ // 画环形的边
                show:false,
                borderColor:'#F5F4F9',
                borderWidth:2,
            },
            data: [100, 35]
        },
        { //中环内阴影环
            name: '中环内阴影环',
            type: 'pie',
            zlevel: 1,
            silent: true,
            radius: ['30%', '31%'],
            center: ["50%", "50%"],
            hoverAnimation: false,
            color: "#ffffff",
            label: {
                normal: {
                    show: false
                },
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            itemStyle: { // 此配置
                // 设置扇形的阴影
               normal: {
                    // 设置扇形的阴影
                    
                    shadowBlur: 3,
                    shadowColor: 'rgba(0,0,0,0.5)', 
                    shadowOffsetX: 0,
                    shadowOffsetY: 3

                }
            },
            data: [100]
        },
        { //内环用来带阴影的环
            name: '内环阴影环',
            type: 'pie',
            zlevel: 1,
            silent: true,
            radius: ['24%', '25%'],
            center: ["50%", "50%"],
            hoverAnimation: false,
            color: "rgba(0,0,0,0)",
            label: {
                normal: {
                    show: false
                },
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            itemStyle: { // 此配置
                // 设置扇形的阴影
               normal: {
                    // 设置扇形的阴影
                    
                    shadowBlur: 3,
                    shadowColor: 'rgba(0,0,0,0.5)', 
                    shadowOffsetX: 0,
                    shadowOffsetY: 3

                }
            },
            data: [100]
        },
        { // 用来遮挡内边阴影的白环
            name: '内环阴遮挡',
            type: 'pie',
            zlevel: 1,
            silent: true,
            radius: ['20%', '24%'],
            center: ["50%", "50%"],
            hoverAnimation: false,
            color: "#ffffff",
            label: {
                normal: {
                    show: false
                },
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            itemStyle: { // 此配置
                color: "#ffffff" // 环设置成透明白色
                // 设置扇形的阴影
            },
            data: [100]
        },
        // { // 内环装饰环
        //     name: '内环阴遮挡',
        //     type: 'pie',
        //     zlevel: 2,
        //     silent: true,
        //     radius: ['21%', '22%'],
        //     center: ["40%", "50%"],
        //     hoverAnimation: false,
        //     color: "#F5F4F9",
        //     label: {
        //         normal: {
        //             show: false
        //         },
        //     },
        //     labelLine: {
        //         normal: {
        //             show: false
        //         }
        //     },
        //     data: [100]
        // }
    ]
};