3d柱状图透明色

描述:当前是关于Echarts图表中的 示例。
 
            // 监听legend
function bindListen(myChart) {
   myChart.on('legendselectchanged', (params) => {
      // 只有选择林地的时候
      if (!params.selected[legendData[1].name] && params.selected[legendData[0].name]) {
         option.series[4].data = xBar3
         option.series[2].itemStyle.normal.color = color[0]
      } else {
        option.series[4].data =xBar2
        option.series[2].itemStyle.normal.color = color[1]
      }
      if (!params.selected[legendData[1].name] && !params.selected[legendData[0].name]) {
        option.series[2].itemStyle.normal.color = color[2]
      }
      // 使用更新后的 option,渲染图表
      myChart.setOption(option)
   })
};
var xData = ['其他林地', '乔木林地', '橡胶园', '茶园', '竹林地', '灌木林地', '其他园地', '果园'];
var val = {
   data1: ['608.123', '643.859', '185.354', '209.232', '732.714', '758.788', '198.801', '281.668'],
   data2: ['1129.372', '1195.738', '344.228', '388.573', '1360.755', '1409.177', '369.202', '523.098']
};
var legendData = [
   {
      name: '林地',
      itemStyle: {
         color: 'rgba(96,255,212,0.6)'
      },
      textStyle: {
         color: 'rgba(255,255,255,0.9)'
      }
   },
   {
      name: '林木',
      itemStyle: {
         color: 'rgba(0,188,255,0.6)'
      },
      textStyle: {
         color: 'rgba(255,255,255,0.9)'
      }
   }];
var color = [
   {
      type: 'linear',
      x: 0,
      x2: 1,
      y: 0,
      y2: 0,
      colorStops: [
         {
            offset: 0,
            color: 'rgba(96,255,212,0.8)'
         },
         {
            offset: 0.5,
            color: 'rgba(96,255,212,0.8)'
         },
         {
            offset: 0.5,
            color: 'rgba(0,190,139,0.8)'
         },
         {
            offset: 1,
            color: 'rgba(0,190,139,0.8)'
         }
      ]
   },
   {
      type: 'linear',
      x: 0,
      x2: 1,
      y: 0,
      y2: 0,
      colorStops: [
         {
            offset: 0,
            color: 'rgba(0,188,255,0.8)'
         },
         {
            offset: 0.5,
            color: 'rgba(0,188,255,0.8)'
         },
         {
            offset: 0.5,
            color: 'rgba(0,138,186,0.8)'
         },
         {
            offset: 1,
            color: 'rgba(0,138,186,0.8)'
         }
      ]
   },
   {
      type: 'linear',
      x: 0,
      x2: 1,
      y: 0,
      y2: 0,
      colorStops: [
         {
            offset: 0,
            color: 'rgba(0,188,255,0)'
         },
         {
            offset: 0.5,
            color: 'rgba(0,188,255,0)'
         },
         {
            offset: 0.5,
            color: 'rgba(0,138,186,0)'
         },
         {
            offset: 1,
            color: 'rgba(0,138,186,0)'
         }
      ]
   }
];
var barWidth = 30;
let xBar1 = [];
let xBar2 = [];
let xBar3 = [];
for (let i = 0; i < val.data1.length; i++) {
   xBar1.push(Number(val.data2[i]));
   xBar2.push(Number(val.data1[i]) + Number(val.data2[i]));
   xBar3.push(Number(val.data1[i]));
};
option = {
   backgroundColor:"black",
   //你的代码
   title: {
      subtext: '亿元',
      left: '3%'
   },
   tooltip: {
      trigger: 'axis',
      axisPointer: {
         type: 'shadow'
      },
      backgroundColor: 'rgba(0,0,0,0.5)',
      borderWidth: 0,
      formatter: function (params) {
         var domHTml = '<span style="display:inline-block;margin-left:5px;width:10px;height:10px;"></span>'
         if (params.length === 2) {
            return (
               params[0].axisValue +
               '<br/>' +
               params[1].marker +
               params[1].seriesName +
               domHTml +
               val.data1[params[0].dataIndex] +
               '亿元' +
               '<br/>' +
               params[0].marker +
               params[0].seriesName +
               domHTml +
               val.data2[params[0].dataIndex] +
               '亿元'
            )
         } else {
            return params[0].axisValue + '<br/>' + params[0].marker + params[0].seriesName + domHTml + val.data1[params[0].dataIndex] + '亿元'
         }
      },
      textStyle: {
         color: 'rgba(255,255,255,0.9)'
      }
   },
   legend: {
      data: legendData
   },
   xAxis: [
      {
         axisLine: {
            lineStyle: {
               color: '#90979c'
            }
         },
         axisTick: {
            show: false
         },
         splitArea: {
            show: false
         },
         data: xData,
         axisLabel: {
            interval: 0,
            rotate: 0,
            formatter: function (value) {
               let ret = '' // 拼接加\n返回的类目项
               var maxLength = 4 // 每项显示文字个数
               var valLength = value.length // X轴类目项的文字个数
               var rowN = Math.ceil(valLength / maxLength) // 类目项需要换行的行数
               if (rowN > 1) {
                  // 如果类目项的文字大于5,
                  for (let i = 0; i < rowN; i++) {
                     let temp = '' // 每次截取的字符串
                     var start = i * maxLength // 开始截取的位置
                     var end = start + maxLength // 结束截取的位置
                     // 这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                     temp = `${value.substring(start, end)}${i !== rowN - 1 ? '\n' : ''}`
                     ret = ret + temp // 拼接最终的字符串
                  }
                  return ret
               } else {
                  return value
               }
            }
         }
      }
   ],
   yAxis: [{
      type: 'value',
      axisLabel: {
         formatter: function (value, index) {
            // value大于1000时除以1000并拼接k,小于1000按原格式显示
            if (value >= 1000) {
               value = value / 1000 + 'k'
            }
            return value
         }
      },
      splitLine: {
         show: false
      },
      axisLine: {
         lineStyle: {
            color: '#90979c'
         }
      },
      splitLine: {
         show: true,
         lineStyle: {
            type: 'dashed',
            opacity: 0.2
         }
      },
      axisTick: {
         show: false
      }
   }],
   series: [
      // data2本体
      {
         z: 1,
         name: legendData[1].name,
         type: 'bar',
         barWidth: barWidth,
         stack: '总量',
         color: color[1],
         data: val.data2
      },
      // data1本体
      {
         z: 2,
         name: legendData[0].name,
         type: 'bar',
         barWidth: barWidth,
         stack: '总量',
         color: color[0],
         data: val.data1
      },
      // 底部立体
      {
         z: 3,
         name: '底部立体',
         type: 'pictorialBar',
         data: xBar1,
         symbol: 'diamond',
         symbolOffset: ['0%', '50%'],
         symbolSize: [barWidth, 10],
         itemStyle: {
            normal: {
               color: color[1]
            }
         },
         tooltip: {
            show: false
         }
      },
      // data2头部
      {
         z: 5,
         name: legendData[1].name,
         type: 'pictorialBar',
         symbolPosition: 'end',
         itemStyle: {
            normal: {
               color: color[1]
            }
         },
         data: xBar1,
         symbol: 'diamond',
         symbolOffset: ['0%', '-50%'],
         symbolSize: [barWidth - 4, (10 * (barWidth - 4)) / barWidth],
         tooltip: {
            show: false
         }
      },
      // data1头部
      {
         z: 4,
         name: legendData[0].name,
         type: 'pictorialBar',
         data: xBar2,
         symbol: 'diamond',
         symbolPosition: 'end',
         symbolOffset: ['0%', '-50%'],
         symbolSize: [barWidth, 10],
         itemStyle: {
            normal: {
               color: color[0]
            }
         },
         tooltip: {
            show: false
         }
      }
   ],
};

bindListen(myChart)