双列序号排行榜(共用)

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            var data = [{
        name: '杭州市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '宁波市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '温州市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '嘉兴市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '湖州市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '绍兴市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '金华市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '衢州市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '舟山市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '台州市',
        value: (Math.random() * 100).toFixed(2)
    },
    {
        name: '丽水市',
        value: (Math.random() * 100).toFixed(2)
    }

]
data = data.map((item) => {
    item.pm = i + 1;
    return item
})


var data = data.sort((a, b) => b.value - a.value);
var max = Math.max(...data.map(item => item.value));
var len = Math.ceil(data.length / 2);
var otherLen = data.length - len;
var datas = [data.slice(0, len), data.slice(len)]
var xAxis = [],
    yAxis = [],
    series = [];
var startIndex;
for (var i = 0; i < 2; i++) {
    startIndex = (i === 0 ? 0 : len);
    xAxis.push({
        show: false,
        type: 'value',
        gridIndex: i,
        max: max,
        axisLine: {
            show: false
        },
        axisTick: {
            show: false
        },
        splitLine: {
            show: false
        }
    })
    yAxis.push({
        type: 'category',
        gridIndex: i,
        axisLine: {
            show: false
        },
        axisLabel: {
            verticalAlign: 'bottom',
            align: 'left',
            padding: [0, 0, 15, 10],
            color: '#fff',
            fontSize: '16',
            formatter: (p, index) => {
                var sIndex = data.map(item => item.name).indexOf(p);
                return '{index|' + moreThanTen(sIndex + 1) + '} ' + p;
            },
            rich: {
                index: {
                    color: '#26BCFF',
                    fontSize: '26',
                    fontWeight: 'bold'
                }
            }
        },
        axisTick: {
            show: false
        },
        inverse: true,
        data: datas[i].map(item => item.name)
    })
    yAxis.push({
        type: 'category',
        gridIndex: i,
        axisLine: {
            show: false
        },
        axisLabel: {
            verticalAlign: 'bottom',
            align: 'right',
            padding: [0, 0, 15, 10],
            textStyle: {
                color: '#fff',
                fontSize: '26',
            },
            formatter: params => {
                return '{num|' + params + '}%'
            },
            rich: {
                num: {
                    color: '#FF982E',
                    fontSize: '26',
                    fontWeight: 'bold'
                }
            }
        },
        axisTick: {
            show: false
        },
        inverse: true,
        data: datas[i].map(item => item.value)
    })
    series.push({
        type: 'bar',
        barWidth: 10,
        xAxisIndex: i,
        yAxisIndex: [2 * i, 2 * (i + 1) - 1],
        itemStyle: {
            color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
                offset: 0,
                color: '#72AEFF' // 0% 处的颜色
            }, {
                offset: 1,
                color: '#0084FF' // 100% 处的颜色
            }], false),
            barBorderRadius: 5
        },
        zlevel: 1,
        data: datas[i]
    })
    series.push({
        type: 'bar',
        barWidth: 10,
        xAxisIndex: i,
        yAxisIndex: [2 * i, 2 * (i + 1) - 1],
        itemStyle: {
            color: '#263877',
            barBorderRadius: 5
        },
        barGap: '-100%',
        zlevel: 0,
        data: (new Array(datas[i].length)).fill(max)
    })
}
option = {
    legend: {
        show: false
    },
    tooltip: {
        trigger: 'axis',
        axisPointer: {
            type: 'shadow'
        }
    },
    grid: [{
        x: '5%',
        y: '5%',
        width: '40%',
        height: '100%'
        // containLabel: true
    }, {
        x2: '5%',
        y: '5%',
        left: '50%',
        width: '40%',
        height: otherLen / len * 100 + '%'
        // containLabel: true
    }],
    yAxis: yAxis,
    xAxis: xAxis,
    series: series
}

function moreThanTen(num) {
    return num >= 10 ? num : '0' + num;
}