渐变柱状图

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            

const nullData = 'data:image/png;base64,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'

// 暂无数据配置
function setNulldata(data = [], top = 330) {
   return [
      {
         type: 'image',
         z: 666,
         invisible: data.length > 0, // 有数据就隐藏
         style: {
            image: nullData,
            width: 100,
            shadowBlur: 0,
            shadowColor: '#000',
            shadowOffsetX: '1',
            shadowOffsetY: '1',
         },
         left: 'center',
         top: top,
      },
      {
         type: 'text',
         left: 'center',
         z: 666,
         top: top + 80,
         silent: true,
         invisible: data.length > 0, // 有数据就隐藏
         style: {
            fill: '#9d9d9d',
            fontWeight: 'bold',
            text: '暂无数据',
            fontFamily: 'Microsoft YaHei',
            fontSize: '20px',
         },
      },
   ];
}
// x轴配置,若无数据时不显示
function xAxisStyle(data = []) {
   return {
      type: 'category',
      show: data.length > 0,
      axisLine: {
         lineStyle: {
            color: 'rgba(255, 255, 255, 0.4)',
         },
      },
      splitLine: {
         show: false,
         lineStyle: {
            color: 'rgba(255, 255, 255, 0.15)',
         },
      },
      axisTick: {
         show: false,
      },
      splitArea: {
         show: false,
      },
      axisLabel: {
         interval: 0,
         color: '#89BAE5',
         fontSize: 14,
      },
   };
}
// y轴配置,若无数据时不显示
function yAxisStyle(data = []) {
   return {
      type: 'value',
      show: data.length > 0,
      axisLine: {
         lineStyle: {
            color: 'rgba(255, 255, 255, 0.4)',
         },
      },
      splitLine: {
         lineStyle: {
            type: 'dashed',
            color: 'rgba(255, 255, 255, 0.1)',
         },
      },
      axisTick: {
         show: false,
      },
      axisLabel: {
         interval: 0,
         color: '#89BAE5',
         fontSize: 14,
         fontFamily: 'DINPro-Medium',
      },
      splitArea: {
         show: false,
      },
   };
}

const tooltipStyle = {
   trigger: 'axis',
   backgroundColor: 'rgba(31, 46, 59, 0.6)',
   borderColor: 'rgba(87, 134, 173, 1)',
   axisPointer: {
      type: 'shadow',
   },
   textStyle: {
      fontSize: 12,
      color: '#fff',
   },
};

const title = {
   textStyle: {
      fontSize: 16,
      fontFamily: 'PingFang SC',
      fontWeight: 400,
      color: 'rgba(255,255,255,.6)',
   },
};


const data = [
   { name: 2021, value: 280 },
   { name: 2020, value: 271 },
   { name: 2019, value: 171 },
]
option = {
   backgroundColor: 'rgba(0,0,0,0.85)',
   color: ['#12B3FE', '#28D7E6'],
   title: {
      text: '标题',
      top: 110,
      left: 30,
      ...title,
   },
   graphic: {
      elements: [...setNulldata(data)],
   },
   grid: {
      top: 160,
      left: 30,
      bottom: 150,
      right: 10,
      containLabel: true,
   },
   tooltip: {
      ...tooltipStyle,
   },
   xAxis: {
      ...xAxisStyle(data),
      data: data.map(({ name }) => name),
      axisLine: {
         lineStyle: {
            color: 'rgba(255, 255, 255, 0.9)',
         },
      },
   },
   yAxis: {
      ...yAxisStyle(data),
      splitNumber: 2,
   },
   series: [
      {
         name: '',
         type: 'bar',
         barWidth: 10,
         data: data.map(({ value }) => value),
         itemStyle: {
            color: {
               type: 'linear',
               x: 0,
               y: 0,
               x2: 0,
               y2: 1,
               colorStops: [
                  {
                     offset: 0,
                     color: '#12B3FE', // 0% 处的颜色
                  },
                  {
                     offset: 1,
                     color: 'rgba(18, 179, 254, 0)', // 100% 处的颜色
                  },
               ],
            },
         },
         label: {
            show: true,
            position: [2, -2],
            color: '#fff',
            formatter: ' ',
            width: 6,
            height: 3,
            lineHeight: 3,
            backgroundColor: '#fff',
         },
      },
   ],
}