双柱(label柱头)

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            // 中间类目两侧图标
var uploadedDataURL1 = '/asset/get/s/data-1626854852589-8B5aNWrgJ.png';
var uploadedDataURL3 = '/asset/get/s/data-1626854824240-gmEmXmoBy.png';
// 柱图圆形label
var uploadedDataURL2 = '/asset/get/s/data-1626854841001-zYQ5-0UJv.png';
var uploadedDataURL4 = '/asset/get/s/data-1626854809739-dWVqRNs_Z.png';

let data1 = [1, 2, 3, 4, 5, 6, 7];
let data2 = [1, 2, 3, 4, 5, 6, 7];
let max1 = Math.max.apply(null, data1);
let max2 = Math.max.apply(null, data2);
let max = Math.max.apply(null, [max1, max2]) * 1.2;
let maxArr = [];
// 统一两边长度
data1.forEach((item) => {
    maxArr.push(max);
});
let categoryData = ['一月', '二月', '三月', '四月', '五月', '六月', '七月'];
option = {
    baseOption: {
        backgroundColor: '#000',
        timeline: {
            show: false,
            top: 0,
            data: [],
        },
        grid: [
            // 左边柱子
            {
                show: true,
                left: '1%',
                top: '3%',
                bottom: '2%',
                containLabel: true,
                width: '40%',
                backgroundColor: {
                    colorStops: [
                        {
                            offset: 0,
                            color: 'rgba(37, 89, 119,0)',
                        },
                        {
                            offset: 1,
                            color: 'rgba(37, 89, 119,0.2)',
                        },
                    ],
                }, //'rgba(37, 89, 119,0.2)'
                borderColor: 'transparent',
            },
            // 中间年龄
            {
                show: false,
                left: '51%',
                top: '3%',
                bottom: '2%',
                width: '0%',
            },
            // 右边柱子
            {
                show: true,

                right: '1%',
                top: '3%',
                bottom: '2%',
                containLabel: true,
                width: '40%',
                backgroundColor: {
                    colorStops: [
                        {
                            offset: 0,
                            color: 'rgba(37, 89, 119,0.2)',
                        },
                        {
                            offset: 1,
                            color: 'rgba(37, 89, 119,0)',
                        },
                    ],
                },
                borderColor: 'transparent',
            },
        ],
        xAxis: [
            {
                type: 'value',
                inverse: true,
                axisLine: {
                    show: false,
                },
                axisTick: {
                    show: false,
                },
                axisLabel: {
                    show: false,
                    color: '#08093f',
                },
                splitLine: {
                    show: false,
                },
            },
            {
                gridIndex: 1,
                show: false,
            },
            {
                gridIndex: 2,
                axisLine: {
                    show: false,
                },
                axisTick: {
                    show: false,
                },
                axisLabel: {
                    show: false,
                    color: '#08093f',
                },
                splitLine: {
                    show: false,
                },
            },
        ],
        yAxis: [
            {
                type: 'category',
                inverse: true,
                position: 'right',
                axisLine: {
                    show: false,
                },
                axisTick: {
                    show: false,
                },
                axisLabel: {
                    show: false,
                },
                data: categoryData,
            },
            {
                gridIndex: 1,
                type: 'category',
                inverse: true,
                position: 'center',
                axisLine: {
                    show: false,
                },
                axisTick: {
                    show: false,
                },
                axisLabel: {
                    show: true,
                    formatter: (params) => {
                        return '{left|}{text|' + params + '}{right|}';
                    },
                    rich: {
                        left: {
                            width: 10,
                            height: 2,
                            backgroundColor: {
                                image: uploadedDataURL3,
                            },
                        },
                        right: {
                            width: 10,
                            height: 2,
                            backgroundColor: {
                                image: uploadedDataURL1,
                            },
                        },
                        text: {
                            width: 35,
                            padding: [0, 5, 0, 5],
                        },
                    },
                    textStyle: {
                        align: 'center',
                        color: '#fff',
                        fontSize: 12,
                    },
                },
                data: categoryData,
            },
            {
                gridIndex: 2,
                type: 'category',
                inverse: true,
                position: 'left',
                axisLine: {
                    show: false,
                },
                axisTick: {
                    show: false,
                },
                axisLabel: {
                    show: false,
                },
                data: categoryData,
            },
        ],
        series: [],
    },
    options: [
        {
            series: [
                {
                    name: '背景1',
                    type: 'bar',
                    barWidth: 4,
                    xAxisIndex: 0,
                    yAxisIndex: 0,
                    z: -10,
                    barGap: '-100%',
                    barCategoryGap: 0,
                    itemStyle: {
                        normal: {
                            barBorderRadius: 5,
                            color: 'rgb(30,44,59)',
                        },
                    },
                    label: {
                        normal: {
                            show: true,
                            formatter: (params) => {
                                return data1[params.dataIndex];
                            },
                            position: 'left',
                            textStyle: {
                                color: '#ffffff',
                                fontSize: 12,
                            },
                            offset: [0, 0],
                        },
                    },
                    data: maxArr,
                },
                {
                    name: '2017',
                    type: 'bar',
                    xAxisIndex: 0,
                    yAxisIndex: 0,
                    barWidth: 4,
                    itemStyle: {
                        normal: {
                            barBorderRadius: 5,
                            color: {
                                type: 'linear',

                                colorStops: [
                                    {
                                        offset: 0,
                                        color: 'rgb(113,97,75)',
                                    },
                                    {
                                        offset: 1,
                                        color: 'rgb(196,185,90)',
                                    },
                                ],
                            },
                        },
                    },
                    label: {
                        normal: {
                            show: true,
                            formatter: (params) => {
                                return '';
                            },
                            position: [-6, -6],
                            padding: [8, 8],
                            backgroundColor: {
                                image: uploadedDataURL4,
                            },
                        },
                    },
                    data: data1,
                },
                {
                    name: '背景2',
                    type: 'bar',
                    barWidth: 4,
                    xAxisIndex: 2,
                    yAxisIndex: 2,
                    z: -10,
                    barGap: '-100%',
                    barCategoryGap: 0,
                    itemStyle: {
                        normal: {
                            barBorderRadius: 5,
                            color: 'rgb(30,44,59)',
                        },
                    },
                    label: {
                        normal: {
                            show: true,
                            formatter: (params) => {
                                return data2[params.dataIndex];
                            },
                            position: 'right',
                            textStyle: {
                                color: '#ffffff',
                                fontSize: 12,
                            },
                            // offset: [0, -25]
                        },
                    },
                    data: maxArr,
                },
                {
                    name: '2018',
                    type: 'bar',
                    xAxisIndex: 2,
                    yAxisIndex: 2,
                    barWidth: 4,
                    itemStyle: {
                        normal: {
                            barBorderRadius: 5,
                            color: {
                                type: 'linear',

                                colorStops: [
                                    {
                                        offset: 0,
                                        color: '#12AEFF',
                                    },
                                    {
                                        offset: 1,
                                        color: '#11FFFC',
                                    },
                                ],
                            },
                        },
                    },
                    label: {
                        normal: {
                            show: true,
                            formatter: (params) => {
                                return '';
                            },
                            position: ['100%', -6],
                            padding: [8, 8],
                            offset: [-10, 0],
                            backgroundColor: {
                                image: uploadedDataURL2,
                            },
                        },
                    },
                    data: data2,
                },
            ],
        },
    ],
};