带序号的横向排名图

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            //模拟数据
var data = [{
   "名称": "工商银行",
   "面积数值_BA_2": 85
}, {
   "名称": "中国移动",
   "面积数值_BA_2": 30
}, {
   "名称": "惠普集团",
   "面积数值_BA_2": 55
}, {
   "名称": "山东绿地",
   "面积数值_BA_2": 28
}, {
   "名称": "济南建设集团",
   "面积数值_BA_2": 77
}]
var orgOptions = {
   "linkExtendList": [],
   "sortDataList": [{
      "col": "面积数值",
      "Merge": false,
      "series": {
         "percentile": false,
         "tooltip": {
            "show": true
         },
         "label": {
            "normal": {
               "dataLabelWereset": false,
               "show": false,
               "textStyle": {
                  "fontFamily": "sans-serif",
                  "color": "#000000",
                  "fontSize": "12",
                  "fontStyle": "normal",
                  "fontWeight": "normal"
               }
            }
         },
         "decimaldigits": 0
      },
      "merge": false,
      "sort": "desc",
      "sortable": false
   }, {
      "col": "名称",
      "Merge": false,
      "colType": "varchar2",
      "display": true,
      "merge": false,
      "values": [],
      "id": "e9457763-c257-4abc-8ecc-1278cb3ac3c6",
      "sortable": false,
      "type": "eq"
   }],
   "chart_type": "metaPortlet",
   "keys": [{
      "col": "名称",
      "Merge": false,
      "colType": "varchar2",
      "display": true,
      "merge": false,
      "values": [],
      "alias": "名称",
      "id": "e9457763-c257-4abc-8ecc-1278cb3ac3c6",
      "sortable": false,
      "type": "eq"
   }],
   "seriesCommon": {
      "label": {
         "normal": {
            "rotate": 0,
            "distance": 5,
            "offset": [0, 0],
            "dataLabelWereset": false,
            "show": true
         }
      }
   },
   "values": [{
      "cols": [{
         "col": "面积数值_BA_2",
         "colDataType": "NUMBER",
         "expCalFormulaReplace": "",
         "series": {
            "Insideoption": {
               "valuetype": "5",
               "valueStyle": {
                  "fontFamily": "sans-serif",
                  "color": "#000000",
                  "fontSize": "12",
                  "fontStyle": "normal",
                  "fontWeight": "normal"
               },
               "text": "",
               "textStyle": {
                  "fontFamily": "sans-serif",
                  "color": "#000000",
                  "fontSize": "12",
                  "fontStyle": "normal",
                  "fontWeight": "normal"
               },
               "type": "1"
            },
            "animationDelayTime": "",
            "percentile": false,
            "lineStyle": {
               "type": "solid"
            },
            "tooltip": {
               "show": true
            },
            "symbolShow": true,
            "label": {
               "normal": {
                  "show": false,
                  "textStyle": {
                     "fontFamily": "sans-serif",
                     "color": "#000000",
                     "fontSize": "12",
                     "fontStyle": "normal",
                     "fontWeight": "normal"
                  }
               }
            },
            "symbolNotShow": false,
            "decimaldigits": 0
         },
         "seriesType": "bar",
         "display": true,
         "expCalFormula": "",
         "width": 0,
         "alias": "面积数值",
         "sortable": false,
         "aggregate_type": "sum",
         "decimaldigits": 0
      }],
      
   }],
   "option": {
      "BAMetaAttributes": {
         "configshowslider": "1",
         "xuhaofontsize": 16,
         "fontsizeright": 16,
         "configautoslider": "1",
         "configpagesize": 4,
         "leftpadding": 30,
         "attrname": "%",
         "rightpadding": 20,
         "fontsizeleft": 16,
         "xuhaorightpadding": 50
      }
   }
   
}



var config_pagesize = orgOptions.option.BAMetaAttributes.configpagesize - 1;;
var config_showslider = orgOptions.option.BAMetaAttributes.configshowslider;
var config_autoslider = orgOptions.option.BAMetaAttributes.configautoslider;
var fontsizeleft = orgOptions.option.BAMetaAttributes.fontsizeleft;
var fontsizeright = orgOptions.option.BAMetaAttributes.fontsizeright;
var attrname = orgOptions.option.BAMetaAttributes.attrname ? orgOptions.option.BAMetaAttributes.attrname : '';
var leftpadding = orgOptions.option.BAMetaAttributes.leftpadding != null ? orgOptions.option.BAMetaAttributes
   .leftpadding : 10;
var xuhaofontsize = orgOptions.option.BAMetaAttributes.xuhaofontsize != null ? orgOptions.option.BAMetaAttributes
   .xuhaofontsize : 28;
var rightpadding = orgOptions.option.BAMetaAttributes.leftpadding != null ? orgOptions.option.BAMetaAttributes
   .rightpadding : 60;
var xuhaorightpadding = orgOptions.option.BAMetaAttributes.xuhaorightpadding != null ? orgOptions.option
   .BAMetaAttributes.xuhaorightpadding : 0;


var h1keyName = orgOptions.keys[0].col;
var z1keyName = orgOptions.values[0].cols[0].col;

var dataSource = [];
var dataSourcebg = [];
var maxNum = 0;
for (let index = 0; index < data.length; index++) {
   const element = data[index];
   let tempitem = {
      value: element[z1keyName],
      name: element[h1keyName],
      xuhao: index + 1,
   }
   dataSource.push(tempitem);
   dataSourcebg.push(100);
   if (element[z1keyName] > maxNum) {
      maxNum = element[z1keyName];
   }
}
var maxArr = data.map((item) => maxNum);
console.log('dataSource', dataSource)

const img1 =
   'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAAt5JREFUaEPtmj1oFEEYhp/vjD9nEklhY5EUIgp2ooVaaW+jjXYKglaKJCgH/mEQCYKnJigqCGkEbWJjEdJopRaKhRAQxEILLVKImktikv1kJpNLuLvo7uyOOWW/5rjdvZln33lvjvveFTIunWIrs/QjTFOgR1YzmuUUktVg+o31tHAJOAa0uHFngHvMcFHWMZbFXKmBVVnFBCeAc0AHMAs8AlYCB4AVwFfgMkUGRPiZBjwVsFbYD1wFNjmI58ANlA/2vbAROAXsduffA2dkLY99ob2AdZxtCGVgj5vYABpQA1xfYoENuLkBU89QuqWVN0nBEwHrOBvs0gpHgIJb6rvAEGqtsHSJtYaxyHFnnQhl0FhJWvkcFzwWsCpFJulGKQFtwLT1qXCfiO9xJ7PXFWhHOQocdD7/AfRS5GYcf/8WWBVhgkNAH9DlwJ6i9AOfEoHWX9yJcBLYm8TfSwJrhZ3AdbCvpt6h1revU4LWfnw7Qg+wOY6/64B1gi7UKmqUNefHUG4DT4AoY9i54RL4uwqsShsVSgjdQBGYQnlAgUEiKkFAawdt5G+hjzWUxZjT3Jv16SSHUa6A3QXMkREiBoAvfwX0z/7+CJQo8lC0wouqT4W3QJnIvjZDGX+bFd/iYF4aYHU+OkvEiFW4ucrs9/sQLsxZYh5Y2dFcnDU0wqscOOgK5QoHldf+uOQeDqtxrnBYfXMPh9Y3VzhXuE6BfFsLbYpc4Vzh/B9HaA/8hwr3Bm1H+S9I3d/8hUZKuIafL26DRkrYlqovaG0rdqFVNT9ipk1rX8w4zcDasRvEAs3Zbm0AboKXW8Audy5MQzthYLN8kYFnJLYcoUwHapMkr9AxFnD1i5ku9jLJqEmOTILUDnjFuomAF4H7BIungU7Xix72Dc69gKvgSaNbZRSlR9oY9t35UgGbSZcIx4cc0GKfnqfIHRFrBe9KDVxV+195/KBu/zYPeERcs8cDPODxC0lMg5hwur7YAAAAAElFTkSuQmCC';
const img2 =
   'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAAxFJREFUaEPtmjFoE2EUx//vfZ4SsNDBxSH2EgMBO4kO4mQGty7tUkdB0MlSWiwdikXpUBRLsVCwIhRc7FIXh27qUh0UpxYCJVyTwaVDQTFgvO/JV75KiNc0yd21Ddy3Hd/dez/++X/vyHtHiHhtb29f8n3/mYhURWQil8ttRZmCogpWLBbPOY7zCMBdAKds3N8AFohoJpPJ7EaRKzTwxsbG6VQqdR/AFIBeAD6AVQBnAAwAYAA7IjJdLpeXCoXCnzDgoYA9zxvUWj8BkDMQRLQuIvNa65K9zhPRGIAr5lpENpl5PJPJrHUK3RGw9ek8gJs2sQE0oOtBIMxcADACIG3315RS4319fZvtgrcFHODTXRF5QUSrWmtjhQOXUsrRWg8T0R0APQCMNZZqtdp0Pp/faRW8JeAgnxLRCoCXvu//aDWZtUkvEd0DMARAATCHcaZarS709/ebQ9p0HQp8mE8PS3DQPjNniWhURK7be7aYecJ13bfNYh4I7HneZa31HIAbrfg0BLgBHgWQtTE+MPOY67rfgmL+B+x53nkRmRGR27YktezTENBKRIasVUxp1ES0TERTrut+r4/7D7hSqaRqtZopQZMAzgKoAVgholft+rRTcKVUj4iYQzkMwAHwE8Cs4zhz6XS6uncGRIRKpdItIpoFcMHWy/fM/Nz3/UqnycM8p5RKa61HiMiUQ7PKIjKZzWbfGNhPAK7ZjSKAOa311zAJo3qWmc0Lx/zqeRvzowEWq+pjAO9EREeVMIo4RGRe7QNE9HDPEvvAWuurUSSIKwYzf0mA41LXxE0UjlPdROG41U0UThQOUCApa3HbIlE4UbhBgcQSiSUSS8TtgUTh41ZYRLrmb343NVI+d1+rat+KQc1AInotIsta619HYdmWmoGNIAHtVjMBWoyzjcXM7bdbA8AbG9qxNAqZOVxDOwB8UESeishF2zSMpBUb+cigHjzKZjcRxTuUqQcPM0440rFXC/4+mYPFIH83G90qpXIi8uDYR7f14E2G4+a2/eHhyRiO14N3zecHjTaJ+wOPvxF8nWDb371gAAAAAElFTkSuQmCC';
const img3 =
   'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA5tJREFUaEPtmU9oVFcUxn/ffZkEq4ILF3VRF6UguJORiXWlrt3UjUI3AaGFQlsZiyQ11GmdJqF/RjEgVCi4KbQbu+lC3FRcNG1M2oIQKIiLdtEushDaaifOu6fcmYmtmclk5s08FXl3NY8775zfO++793HPJwY8bGp0d4x9inE/ctEpTczdHmQKDSqYfZLfHleH3kf2GjDUjLti0uxQtVpW6ee7g8jVN7CVdg/73OY3TZoEtgExcAVsBHQYcBjLcnbGVTdfUul6rR/wvoBr04VXMD4CXqpDiO+A8x7dCZfO2y6JokE+XBssITuZm7h5NSl0IuCV6b17nKkCOtBMfEfG+dgpALeMyDho2FvAC83JqxE6qXd/WOoVvCfghk6js4igUwfcNeMzM3+FKApSWH/E5OT8UaHjwFaghulSNFI7o3cWl7sF7wq4jU4fIH1l6HPD/uw2WV013m+T9DpwBIjCQ8us7B78PavS0spGsTYEbtGpcQNxzku/bRS807zDXgROYOxv/u824tTQxPzXne5bF7hXnSaFj7ztN3ECCA8QluZ1LysOTyz81C5mC7B9mN8Ru6iMMdazTpNSx3EkuSMSQSpha/SIy5GPJ3V68ff/h30IbJWXN/lqXDRjHNgCJNZpUm6hrcKOY3YUyAF/Scy4kaii4tz9+howQ/FM4RjGDLCzmexb4EK/Ok0K7szC9he2wYPNGL8ixqPx+S9Vmy7MYeyrq0f84lAlhsWkyQZ5XwR5jxVl7GrImxuqTRWs8ds+MPFN+D4NMmn/sbyTcVjovbokVoG9tLf/4OlFcGYLGXB69YWswmlWN8TOKpxVeE0FMklkksgkkbYGsgpnFe5cgWwfTlshWYWzCj9z+7DgdOy5RqT6sf/pGWuO+fFU4UeDPfUjNHbLjIp37tbTANzSSBHfy0q4ODc6hqwM7Gh09rmGMeud/ngS4M7b84gicKiZ/79W1SqQlQ5sqeXujQdPAtgEVBFfmHHZpHuPA1xmz0mMYbwKjLRtBq4FsZn8zthHoTF4rKESlk12Md02VlOnpjcQ27tqt64FXymP7nORnUu7UdhOpz72bw9PLsy3e6sdLYM0W7EdW6rhva4zNvQ4wn2DbHZ307TutF66An64MPuxE3qwBQYGvBqorWEjPo7RzXbJejVeBg68GrDFEoNHrIak1lZqwHV9t5rjdTMHC+Z4MvMwVeAO+g5TiezZxwLcRt//JDXAOwH/C2NeWG8WRbglAAAAAElFTkSuQmCC';
const img4 =
   'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAAt9JREFUaEPtmj9oFEEUxn/vEpVAAgHTpDCFiIKdaKFW2ttooekUBGMURS4oAeO/EOQIeGpCLjlBSCMYi9hYhDRaqYViIQQEsdBCBQVBUWLiPpm9OXLsnZu72d0YZac5lmW++e233wzceyvEPSZ0Kx7XfNkMfRyXuTiXkNjEitqBxxWUY0Cz1V1EuEWGS/TIpzjWig58T9fymVMoA0A78AuYtnAHgCbgC8IFPjLBZVmMAh4NeFz3owwDmyzEY+AG8MZebwTOALvt9RxKHydlxhXaDXhct6HkgT12YQNoQA1wrWGAzwIb7M0Z13w3BlzUThYZQjjibynzqqGIMI36UQgba4BDwFGgDXDKd33AeW1hHVmEfqAVWACmEG6jfG3o9Xq0k6EHqMz3EOsZ5aD8XE4rHFhVKNCNkAO6rNhDYAR4t5z4MveD+X6NcI5euR8278/AJqceYwi7rMAr8HP7PCJocLrJt9mY5gHMeISQpVde1FqnGrg6p+b8LKA8QPBihi3JCU2oHxETFXM0eiiTNDNAj7yvXHMJOM6cuj6V0Ib6m9JsTrNJv6HkmCdPVn6Uni3ZnLqim+PvNLDXCrxF6ecEd4WCPgF2JpxTV/DtQBbYYgWeGmC1F4OJ5tQVWckg7AMuliKxBLzDVXOF5j1LgRN2OnU4YYNJHU4dDjiQRiKNRBqJpDOQOpw6HO5Aeg4nnZDU4dTh/+4cPk+GWb9ItJpGjb/5S4UU4SUeeczv6hg1CimlUtVhhKtAJ/gOzwKjwIe/xB1SqioTjWkrGfpRvzTUAsyj3EGYBL6vCHhdxcAgSVG78MihdPuVIVil5dYgeEFNgfD6ChQKTU77gM0WocGCdiV4sqXYYE4jtgwqweMsdtfKKQzSwc3oTZnqfLu3vRpoC4Rt8PraXkEFt8Zi3Y2X+IHLio23buvKaXLARrl2c3zKNlWcmofJApfV/5nPD4J2mA88lBGUBdcGeJjDvwEuqGXYEDGELgAAAABJRU5ErkJggg==';

option = {
   backgroundColor: "#041C38",
   grid: [{
      left: leftpadding,
      top: 13,
      right: rightpadding,
      bottom: 2,
      containLabel: true,
   },],
   xAxis: [{
      gridIndex: 0,
      type: 'value',
      axisLabel: {
         show: false
      },
      axisLine: {
         show: false
      },
      splitLine: {
         show: false
      },
      axisTick: {
         show: false
      },
   },
   {
      gridIndex: 0,
      type: 'value',
      max: 100,
      axisLabel: {
         show: false
      },
      axisLine: {
         show: false
      },
      splitLine: {
         show: false
      },
      axisTick: {
         show: false
      },
   },
   ],
   yAxis: [{
      gridIndex: 0,
      type: 'category',
      inverse: true,
      position: 'left',
      data: dataSource.map((item) => item.name),
      axisTick: {
         show: false
      },
      axisLine: {
         show: false
      },
      splitLine: {
         show: false
      },
      axisLabel: {
         width: xuhaofontsize * 2.5,
         padding: [0, 0, 20, -95 + xuhaorightpadding],
         align: 'left',
         formatter: (name, index) => {
            let tempValue;
            for (var i = 0; i < dataSource.length; i++) {
               if (dataSource[i].name === name) {
                  tempValue = dataSource[i].xuhao;
               }
            }

            const id = tempValue;
            if (id < 4) {
               return `{icon${id}|${id}}`;
            } else {
               return `{count|${id}}`;
            }
         },
         rich: {
            icon1: {
               width: xuhaofontsize * 1.5,
               height: xuhaofontsize * 1.5,
               align: 'center',
               padding: [0, 0, 2, 0],
               backgroundColor: {
                  image: img1,
               },
               color: '#ffffff',
               fontSize: xuhaofontsize,
            },
            icon2: {
               width: xuhaofontsize * 1.5,
               height: xuhaofontsize * 1.5,
               padding: [0, 0, 2, 0],
               align: 'center',
               backgroundColor: {
                  image: img2,
               },
               color: '#ffffff',
               fontSize: xuhaofontsize,
            },
            icon3: {
               width: xuhaofontsize * 1.5,
               height: xuhaofontsize * 1.5,
               padding: [0, 0, 2, 0],
               align: 'center',
               backgroundColor: {
                  image: img3,
               },
               color: '#ffffff',
               fontSize: xuhaofontsize,
            },
            count: {
               width: xuhaofontsize * 1.5,
               height: xuhaofontsize * 1.5,
               padding: [0, 0, 2, 0],
               align: 'center',
               backgroundColor: {
                  image: img4,
               },
               color: '#ffffff',
               fontSize: xuhaofontsize,
            }
         },
      },
   },],

   series: [{
      name: '背景',
      type: 'bar',
      barWidth: 6,
      barGap: '-100%',
      xAxisIndex: 0,
      yAxisIndex: 0,
      data: maxArr,
      itemStyle: {
         normal: {
            color: '#02BAF433',
            barBorderRadius: [30, 30, 30, 30],
         },
      },
      label: {
         show: true,
         offset: [40, 0],
         color: '#00C0FD',
         fontSize: fontsizeright,
         fontWeight: 500,
         position: 'right',
         align: 'right',
         formatter: function (params) {
            let tempValue;
            for (var i = 0; i < dataSource.length; i++) {
               if (dataSource[i].name === params.name) {
                  tempValue = dataSource[i].value;
               }
            }
            return tempValue + attrname;
         }
      }
   },
   {
      type: 'bar',
      xAxisIndex: 0,
      yAxisIndex: 0,
      barWidth: 6,
      data: dataSource,
      silent: true,
      label: {
         show: true,
         offset: [10, -16],
         color: '#fff',
         fontSize: fontsizeright,
         fontWeight: 500,
         position: 'left',
         align: 'left',
         formatter: function (params) {
            return params.data.name;
         }
      },
      itemStyle: {
         emphasis: {
            barBorderRadius: [0, 20, 20, 0],
         },
         normal: {
            barBorderRadius: [0, 20, 20, 0],
            color: function (param) {
               return new echarts.graphic.LinearGradient(
                  0,
                  0,
                  1,
                  0,
                  [{
                     offset: 0,
                     color: '#00C0FD00', // 0% 处的颜色
                  },
                  {
                     offset: 1,
                     color: '#00C0FD', // 100% 处的颜色
                  },
                  ],
                  false
               )
            },
         },
      },
   },
   {
      type: 'pictorialBar',
      data: dataSource.map((item) => item.value),
      xAxisIndex: 0,
      yAxisIndex: 0,
      symbol: 'circle',
      symbolRotate: null,
      symbolSize: [7, 7],
      z: 100,
      symbolPosition: 'end',
      symbolOffset: [0, 0],
      itemStyle: {
         color: function (param) {
            return '#00C0FD'
         },
         shadowColor: 'rgba(115, 243, 255, 1)',
         shadowBlur: 6,
      },
   },

   ],
};