条形图排序涨幅

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            let _data = [-10, -9, -8, -7, -6, -5, -4, -3, -2, 5];
let trueData = _data.map((v) => Math.abs(v));
// 红的
let imgUp =
    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAexJREFUWEftlj9IG1Ecx7+/y1FBxcEjCQqC3t3kYGkuIDqIDh2cGhBxEsFFcNDN1XZ0KJRCl0JBnKRDN1F00EWKmD9QsVC400GJ3AMXB8Wo+ZVCFAm55L0LNIO59b6/7/fzvu8e7wgNfqjefLbtFnLd27A+dQEIxzoFYBDzx2j25EMYiNAApfDex1BmnohnT36oQoQCEI75HaDJ52EE5ItcHI9nT3+pQCgD+I75hUDzlUKIcQjWU9Hcn7wshBKASJqzYPpWzZzB24VXhVTPz/MbGQhpAP9N32to2g4BUQnjtVjGm5HQQQpA9Pe3o7WwAeYRGdOSZjGW8T7X0ssBONYqAKkVPQu80QlvO9PefjWImgB+wnxPRMu1VhLwPhfR8M449M6C5qsCiIQ1BcJ6yPDSGO3c4zrVnclfVzw5QeZ+om9AI22Tge76AAAmfI2nvTklAOFYuwBG6w1/nI/o1GMcuOflfoFbIBx7ksCfQjawVxZ0FMt4C0oNVBJfJO3RCPMWgJagZh6IxrrSbjlAYJE1T0H5pHAsD4DZSICq38b/aKAJ0Gyg2UCzgRfegJ+wVoiw1LC7wE/a08S8FnC1Hms6DRsH7pXsf4TybXg5aHfc32EI4AGA256CSBN6EXtGzv0tG/5PpwygYi6j/QuNY80hJ6JoYwAAAABJRU5ErkJggg==';
// 绿的
let imgDown =
    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAetJREFUWEftlTFo1GAUx/8vtLVFWkdHLRaUJgfCgZe2OLSgFAqCooKbLi7ieg4mdxe+tNCOIoKTjqUFETt0EKHQwS/oIDSpS4dOdq443ND7nuTKLcddLl/uzjpc1rz3//++f973Qjjjh3T954pXx0/ODS0R07Xm3mFVe7u78vNIR1MbwHat7wDyrU34vRTRk34DcHsDPpQimjxDAECKUCtVreL4ZLZrJSQwABgkMEhgkMB/kMCo8Wdsxzuspl3HWpuwUJ6aIDV6nCTOBpuBF+33BcB2px8DxrtkcVqTYu9F1wAFx9wgogdphRLrGBXph16rmrafwHatAwBXegHAzJuBHz3UApgpWXeZ8aEnAOBHgYjWtQBOf725VYCL3UAQ6PlXsfe6nUbiLcg/zQ+PXKx+YdDNTBAMT/phJam34zWcLU9fV8r4COCSJsSWFOGdTj0dAWKBG465YBDFEOOdBE/f0y821K00+yAVQCxZcMz7RLSZBoAThq65PzVAfShLlg/Gy8RNCH4WiOhNGtB6VmkLG3W2m9sGeLFlH8ORfriso6kNMOPmcgz1CaDLTUafpQhv65hnSiBumnXMBUW0DWCkYchG9ULgHfz+JwD1eXCseyC8YuC8qqn5byv7P3TNMyeQxSjTJuylUTutv8R3siHwOq4+AAAAAElFTkSuQmCC';
const colors = [
    '#377D2C',
    '#CCCCCC',
    '#CCCCCC',
    '#CCCCCC',
    '#CCCCCC',
    '#CCCCCC',
    '#CCCCCC',
    '#F7CA75',
    '#F7CA75',
    '#F7CA75',
];

option = {
    backgroundColor: '#fff',
    tooltip: {
        trigger: 'axis',
        show: true,
        axisPointer: {
            // 坐标轴指示器,坐标轴触发有效
            type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
        },
        formatter: function (parmas, i) {
            return _data[parmas[0].dataIndex] > 0
                ? parmas[0].name + ' : ' + parmas[0].value
                : parmas[0].name + ' : -' + parmas[0].value;
        },
    },
    legend: {
        show: false,
    },
    grid: {
        left: '-10%',
        right: '10%',
        bottom: '3%',
        containLabel: true,
    },
    xAxis: [
        {
            splitLine: {
                show: false,
            },
            type: 'value',
            show: false,
        },
    ],
    yAxis: [
        {
            splitLine: {
                show: false,
            },
            axisLine: {
                //y轴
                show: false,
            },
            type: 'category',
            axisTick: {
                show: false,
            },
            inverse: true,
            data: [
                'OCBG 滤片',
                'OPBG ALPS',
                'OCBG 楼镜线',
                'OCBG 单反线',
                'OPBG 米兰线',
                'OPBG 光学',
                'OCBG 镀膜线',
                'BMBG 品园线',
                'OCBG 滤片线',
                'OPBG 滤线Cover',
            ],
            axisLabel: {
                color: '#aaa',
                fontSize: 14,
                margin: 145,
                textStyle: {
                    align: 'left',
                },
            },
        },
        // {
        //     type: 'category',
        //     inverse: true,
        //     offset: 10,
        //     axisTick: 'none',
        //     axisLine: 'none',
        //     show: true,
        //     data: _data,
        //     axisLabel: {
        //         textStyle: {
        //             color: '#000',
        //             fontSize: '12',
        //         },
        //     },
        // },
        {
            type: 'category',
            inverse: true,
            offset: 60,
            axisTick: 'none',
            axisLine: 'none',
            show: true,
            axisLabel: {
                textStyle: {
                    color: '#000',
                    fontSize: '12',
                },
                formatter: (param) => {
                    let index;
                    if (param > 0) {
                        index = 1;
                    } else {
                        index = 2;
                    }
                    return `{img${index}|}{value|${param}%}`;
                },
                rich: {
                    img1: {
                        height: 25,
                        backgroundColor: { image: imgUp },
                    },
                    img2: {
                        height: 25,
                        backgroundColor: { image: imgDown },
                    },
                },
            },
            data: _data,
        },
    ],
    series: [
        {
            name: '',
            type: 'bar',
            barWidth: 25, // 柱子宽度
            label: {
                show: false,
                position: 'right', // 位置
                color: '#000',
                fontSize: 24,
                distance: 12, // 距离
                formatter: function (value, i) {
                    return value[i];
                },
            }, // 柱子上方的数值
            itemStyle: {
                barBorderRadius: [0, 0, 0, 0], // 圆角(左上、右上、右下、左下)
                normal: {
                    color: function (params) {
                        return colors[params.dataIndex];
                        // 取每条数据的 index 对应 colors 中的 index 返回这个颜色
                    },
                },
            },
            data: trueData,
        },
    ],
};