柱状图

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            let tdata = [
    { code: '相关舆情', stock: '5408', fundPost: '19785' },
    { code: '事件总数', stock: '4007', fundPost: '16064' },
    { code: '标准警情数', stock: '1382', fundPost: '14319' },
    { code: '案件总数', stock: '457', fundPost: '13100' },
];
function contains(arr, dst) {
    var i = arr.length;
    while ((i -= 1)) {
        if (arr[i] == dst) {
            return i;
        }
    }
    return false;
}

var attackSourcesColor = [
    new echarts.graphic.LinearGradient(0, 1, 1, 1, [
        { offset: 0, color: 'rgba(32,220,249,0.1)' },
        { offset: 1, color: 'rgba(32,220,249,1.000)' },
    ]),
    new echarts.graphic.LinearGradient(0, 1, 1, 1, [
        { offset: 0, color: 'rgba(55,230,173,0.1)' },
        { offset: 1, color: 'rgba(55,230,173,1.000)' },
    ]),
    new echarts.graphic.LinearGradient(0, 1, 1, 1, [
        { offset: 0, color: 'rgba(244,199,0,0.1)' },
        { offset: 1, color: 'rgba(244,199,0,1.000)' },
    ]),
    new echarts.graphic.LinearGradient(0, 1, 1, 1, [
        { offset: 0, color: 'rgba(130,164,170,1)' },
        { offset: 1, color: 'rgba(130,164,170,1.000)' },
    ]),
];
var attackSourcesColor1 = ['#20dcf9', '#37e6ad', '#f4c700', '#82a4aa'];
var attaData = [];
var attaName = [];
var topName = ['相关舆情', '事件总数', '标准警情数', '案件总数'];
tdata.forEach((it, index) => {
    attaData[index] = parseFloat(it.fundPost).toFixed(2);
    attaName[index] = it.stock;
    topName[index] = `${it.code} ${it.stock}`;
});
var salvProMax = []; //背景按最大值
for (let i = 0; i < attaData.length; i++) {
    salvProMax.push(attaData[0]);
}
function attackSourcesDataFmt(sData) {
    var sss = [];
    sData.forEach(function (item, i) {
        let itemStyle = {
            color: i > 3 ? attackSourcesColor[3] : attackSourcesColor[i],
        };
        sss.push({
            value: item,
            itemStyle: itemStyle,
        });
    });
    return sss;
}

option = {
    backgroundColor: '#000',
    tooltip: {
        show: false,
        textStyle: {
            fontSize: 16,
        },
    },
    color: ['#05071e'],
    legend: {
        show: false,
        pageIconSize: [12, 12],
        itemWidth: 20,
        itemHeight: 10,
        textStyle: {
            //图例文字的样式
            fontSize: 10,
            color: '#fff',
        },
        selectedMode: false,
        //data: ['个人所得(亿元)'],
    },
    grid: {
        left: '2%',
        right: '0',
        width: '90%',
        bottom: '-4%',
        top: '8%',
        containLabel: true,
    },
    xAxis: {
        type: 'value',

        splitLine: {
            show: false,
        },
        axisLabel: {
            show: false,
        },
        axisTick: {
            show: false,
        },
        axisLine: {
            show: false,
        },
    },
    yAxis: [
        {
            type: 'category',
            inverse: true,
            axisLine: {
                show: false,
            },
            axisTick: {
                show: false,
            },
            axisPointer: {
                label: {
                    show: true,
                    //margin: 30
                },
            },
            padding: [5, 0, 0, 0],
            //postion: "right",
            data: attaName,
            axisLabel: {
                show: true,
                margin: 30,
                fontSize: 20,
                align: 'left',
                padding: [0, 0, 0, -230],
                color: '#000',
                rich: {
                    nt0: {
                        color: attackSourcesColor1[0],
                        // backgroundColor: attackSourcesColor1[3],
                        // width: 13,
                        // height: 13,
                        fontSize: 30,
                        lineHeight: 3,
                        padding: [0, 0, 0, 0],
                        lineHeight: 5,
                    },
                    nt1: {
                        color: attackSourcesColor1[1],
                        // backgroundColor: attackSourcesColor1[0],
                        // width: 13,
                        // height: 13,
                        fontSize: 30,
                        borderRadius: 100,
                        lineHeight: '5',
                        padding: [0, 0, 0, 0],
                        // padding:[0,0,2,0],
                    },
                    nt2: {
                        color: attackSourcesColor1[2],
                        // backgroundColor: attackSourcesColor1[1],
                        // width: 13,
                        // height: 13,
                        fontSize: 30,
                        borderRadius: 100,
                        padding: [0, 0, 0, 0],
                    },
                    nt3: {
                        color: attackSourcesColor1[3],
                        // backgroundColor: attackSourcesColor1[2],
                        // width: 13,
                        // height: 13,
                        fontSize: 30,
                        padding: [0, 0, 0, 0],
                    },
                    ntOther: {
                        color: '#fff',
                        fontSize: 30,
                    },
                    top0: {
                        color: attackSourcesColor1[0],
                        fontSize: 35,
                        padding: [0, 0, 0, 0],
                        fontStyle: 'italic',
                    },
                    top1: {
                        color: attackSourcesColor1[1],
                        fontSize: 35,
                        padding: [0, 0, 0, 0],
                        fontStyle: 'italic',
                    },
                    top2: {
                        color: attackSourcesColor1[2],
                        fontSize: 35,
                        padding: [0, 0, 0, 0],
                        fontStyle: 'italic',
                    },
                    other: {
                        color: attackSourcesColor1[3],
                        fontSize: 35,
                        padding: [0, 0, 0, 0],
                        fontStyle: 'italic',
                    },
                },
                formatter: function (value, index) {
                    if (index == 0)
                        return (
                            ['{top' + index + '|' + 'No.' + (index + 1) + ' ' + '}'] +
                            ['{ntOther' + '|' + '相关舆情' + '}'].join('\n')
                        );
                    else if (index == 1)
                        return (
                            ['{top' + index + '|' + 'No.' + (index + 1) + ' ' + '}'] +
                            ['{ntOther' + '|' + '事件总数' + '}'].join('\n')
                        );
                    else if (index == 2)
                        return (
                            ['{top' + index + '|' + 'No.' + (index + 1) + ' ' + '}'] +
                            ['{ntOther' + '|' + '标准警情数' + '}'].join('\n')
                        );
                    else if (index == 3)
                        return (
                            ['{other' + '|' + 'No.' + (index + 1) + ' ' + '}'] +
                            ['{ntOther' + '|' + '案件总数' + '}'].join('\n')
                        );
                },
            },
        },
        {
            type: 'category',
            inverse: true,
            axisTick: 'none',
            axisLine: 'none',
            show: true,
            axisLabel: {
                rich: {
                    nt0: {
                        color: attackSourcesColor1[0],
                        // backgroundColor: attackSourcesColor1[3],
                        // width: 13,
                        // height: 13,
                        fontSize: 40,
                        align: 'center',
                        lineHeight: 3,
                        borderRadius: 100,
                        padding: [0, 1, 2, 1],
                        lineHeight: 5,
                    },
                    nt1: {
                        color: attackSourcesColor1[1],
                        // backgroundColor: attackSourcesColor1[0],
                        // width: 13,
                        // height: 13,
                        fontSize: 40,
                        align: 'center',
                        borderRadius: 100,
                        lineHeight: '5',
                        padding: [0, 1, 2, 1],
                        // padding:[0,0,2,0],
                    },
                    nt2: {
                        color: attackSourcesColor1[2],
                        // backgroundColor: attackSourcesColor1[1],
                        // width: 13,
                        // height: 13,
                        fontSize: 40,
                        align: 'center',
                        borderRadius: 100,
                        padding: [0, 1, 2, 1],
                    },
                    nt3: {
                        color: attackSourcesColor1[3],
                        // backgroundColor: attackSourcesColor1[2],
                        // width: 13,
                        // height: 13,
                        fontSize: 40,
                        align: 'center',
                        borderRadius: 100,
                        padding: [0, 1, 2, 1],
                    },
                },
                formatter: function (value, index) {
                    if (index <= 3) return ['{nt' + index + '|' + value + '}'].join('\n');
                    else return ['{nt' + 3 + '|' + value + '}'].join('\n');
                },
            },
            data: attackSourcesDataFmt(attaName),
        },
        {
            //名称
            type: 'category',
            offset: -10,
            position: 'left',
            axisLine: {
                show: false,
            },
            inverse: false,
            axisTick: {
                show: false,
            },
            axisLabel: {
                show: false,
                interval: 0,
                color: ['#fff'],
                align: 'left',
                verticalAlign: 'bottom',
                lineHeight: 32,
                fontSize: 10,
            },
            data: topName,
        },
    ],
    series: [
        {
            zlevel: 1,
            name: '',
            type: 'bar',
            barWidth: '26px',
            animationDuration: 1500,
            data: attackSourcesDataFmt(attaData),
            align: 'center',
            itemStyle: {
                normal: {
                    barBorderRadius: 0,
                },
            },
            label: {
                show: false,
                fontSize: 10,
                color: '#fff',
                textBorderWidth: 2,
                padding: [2, 0, 0, 0],
            },
        },
        {
            name: '',
            type: 'bar',
            barWidth: 26,
            barGap: '-100%',
            margin: '20',
            data: salvProMax,
            textStyle: {
                //图例文字的样式
                fontSize: 10,
                color: '#fff',
            },
            itemStyle: {
                normal: {
                    //color: "#142831",
                    //width:"100%",
                    fontSize: 10,
                    //barBorderRadius: 30,
                },
            },
        },
    ],
};