bigntu

描述:当前是关于Echarts图表中的 饼图 示例。
 
            
var data = [
    {
        value: 3,
        name: '国铁',
    },
    {
        value: 22,
        name: '城轨',
    },
    {
        value: 2,
        name: '检修',
    },
    {
        value: 5,
        name: '海外',
    },
];

var legendData = ['国铁', '城轨', '检修', '海外'];
var colorArr = ['#FF9C98', '#3082FF', '#FEAF1B', '#00C9D9'];
function getRich() {
    let result = {};
    colorArr.forEach((v, i) => {
        (result[`normal${i}`] = {
            fontSize: 20,
            align: 'left',
            padding: [10, 4],
            color: '#4B525E',
        }),
            (result[`value${i}`] = {
                color: '#4B525E',
                align: 'left',
                fontSize: 14,
                padding: [2, 4],
            });
    });
    return result;
}
option = {
    color: colorArr,
    title:[ {
        text:'15.96',
        left:'center',
        top:'48%',
        padding:[10,0],
        textStyle:{
            color:'#4B525E',
            fontSize:32,
            fontWeight:'normal',
            align:'center',
            fontFamily:'DIN'
        }
    },{
        text:'总得分',
        left:'center',
        top:'52%',
        padding:[10,0],
        textStyle:{
            color:'#4B525E',
            fontSize:18,
            fontWeight:'normal',
            align:'center',
            fontFamily: 'PingFang'
        }
    },],
    legend: {
        icon: 'circle',
        itemWidth: 10,
        itemHeight: 10,
        padding: [10, 20],
        backgroundColor: '#F9F9F9',
        borderRadius: 20,
        // 大小 和位置 文字样式
        itemGap: 8,
        x: 'center',
        top: 10,
        textStyle: {
            fontSize: 12,
            color: '#4B525E',
            fontFamily: 'PingFang',
        },
        data:legendData,
    },
    series: [
        {
            name: '访问来源',
            type: 'pie',
            radius:['55%','70%'],
            center: ['50%', '50%'],
            selectedMode: 'single',
            selectedOffset: 10,
            clockwise: true,
            label: {
                normal: {
                    formatter: function (params, ticket, callback) {
                        aa = params.dataIndex;
                        var percent = 0;
                        var total = 0;
                        for (var i = 0; i < data.length; i++) {
                            total += data[i].value;
                        }
                        percent = ((params.value / total) * 100).toFixed(0) + '%';
                        const index = params.dataIndex;
                        // return [`{a${index}|${params.name}:${percent}}`].join('\n')
                        return [`{normal${index}|${percent}}\n{value${index}|${params.name}}`].join('\n');
                    },
                    padding: [0, -80],
                    rich: getRich(),
                },
            },
            labelLine: {
                length: 40,
                length2: 80,
            },
            itemStyle: {
                normal: {
                    shadowColor: 'rgba(0,0,0,0.4)',
                    shadowBlur: 15,
                },
            },
            data: data,
        },
    ],
};